9月6
在nfs和nfs的守护进程rpcbind起来后,会由几个端口,防火墙需要打通,才能使客户端访问,否客户端列文件目录一直卡住,进不去挂载的目录。

nfs启动时会随机启动多个端口并向RPC注册,这样如果开启防火墙对NFS端口进行限制就会有点麻烦,可以更改配置文件固定NFS服务相关端口。这样设置固定端口以后即便重启机器也很方便挂载,如果不设置固定端口,机器或服务重启后之前防火墙添加的规则就失效了,

下面的是没有设置固定端口时的情况
点击在新窗口中浏览此图片


设置固定端口:

编辑 /etc/sysconfig/nfs 文件:

vim /etc/sysconfig/nfs
在文件最后添加如下内容:
##########################分割线###############################
MOUNTD_PORT=4001
STATD_PORT=4002
LOCKD_TCPPORT=4003
LOCKD_UDPPORT=4004
RQUOTAD_PORT=4005

添加后保存退出并重启 rpcbind和nfs

systemctl restart rpcbind
systemctl restart nfs
重启服务后再查看端口:
点击在新窗口中浏览此图片


nfs端口是2049,rpcbind的端口是111固定的,防火墙中也需要开启。

firewall-cmd --zone=public --add-port=4001-4005/tcp --permanent
firewall-cmd --zone=public --add-port=4001-4005/udp --permanent
firewall-cmd --zone=public --add-port=111/tcp --permanent
firewall-cmd --zone=public --add-port=111/udp --permanent
firewall-cmd --zone=public --add-port=2049/tcp --permanent
firewall-cmd --zone=public --add-port=2049/udp --permanent

firewall-cmd --reload
9月6
准备工作
1.下载nfs服务(服务端机和客户端机器都需要安装)
yum -y install rpcbind nfs-utils

2.关闭防火墙
systemctl stop firewalld

setenforce 0 ;

3. 编辑配置文件
vim /etc/exports

添加内容为:

/data/file 对应的主机或IP地址  例如:/data/file 192.168.11.66/24(rw,async)

4.启动nfs服务,启动rpc服务
systemctl  start rpcbind

systemctl start nfs

6、查看配置文件是否生效
showmount -e
输出如下:
Export list for mesapp1:
/data/file 192.168.11.66/24

7.客户端机先启动rpcbind服务再查看nfs服务可用目录

systemctl start rpcbind
systemctl enable rpcbind

showmount -e 192.168.1.66(服务器端IP地址)
输出如下:
Export list for 192.168.1.66:
/data/file 192.168.11.66/24

最后执行挂载命令

挂载:mount -t nfs 192.168.1.66:/data/file /data/file

异常如下:mount.nfs: No route to host

解决:
1、ping 服务器没有问题,网络是通的

2、服务端和客户端防火墙和 selinux 状态

firewall-cmd --state
显示是running
systemctl stop firewalld.service

注意:将服务器和客户端全部将防火墙关闭哦!

3.再次挂载,就OK

4.查看  showmount -e 192.168.1.66

会显示挂载的信息
9月5
假设我有一个包含一些静态数据的Docker容器。

通过docker-compose配置文件volumes参数

docker-compose.yml文件:

配置文件示例:

volumes:
  - /var/run/:/host/var/run/
  - /channel-artifacts:/var/hyperledger/configs
  - /data/logs:/tmp/logs/

把容器中/tmp/logs目录映射到宿主机根据目录下的/data/logs目录下。这两个目录会共享数据。

当使用命名卷并检查它时,它的工作方式与预期类似。
9月5
一. 问题描述
  在docker部署nacos的时候遇到了这个样子的问题No route to host 导致了nacos容器无法连接宿主机的docker数据库。
  然后我就进入到了nacos容器里面,ping了宿主机的地址,结果是通着的,然后使用telnet测试了3306端口,结果也会报出这个异常。
  原因是什么呢?明明数据库外部可以正常连接访问,但是宿主机内部容器确实无法访问?

二. 原因分析
  在进行docker部署的时候我们采用的是bridge网桥的模式。

  启动docker时,docker进程会创建一个名为docker0的虚拟网桥,用于宿主机与容器之间的通信。当启动一个docker容器时,docker容器将会附加到虚拟网桥上,容器内的报文通过docker0向外转发。

  如果docker容器访问宿主机,那么docker0网桥将报文直接转发到本机,报文的源地址是docker0网段的地址。而如果docker容器访问宿主机以外的机器,docker的SNAT网桥会将报文的源地址转换为宿主机的地址,通过宿主机的网卡向外发送。

  因此,当docker容器访问宿主机时,如果宿主机服务端口会被防火墙拦截,从而无法连通宿主机,出现No route to host的错误。

  而访问宿主机所在局域网内的其他机器,由于报文的源地址是宿主机ip,因此,不会被目的机器防火墙拦截,所以可以访问。

三. 解决方案
1> 关闭宿主机的防火墙
systemctl stop firewalld

2> 在防火墙上开发指定的端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=3307/tcp --permanent
firewall-cmd --reload
注:在进行完防火墙的操作之后最好是要进行以下docker的重启,systemctl restart docker,否则容器到因为虚拟网桥失效而导致的iptables failed问题

四. 小结
  docker的容器网络连接一直是一个问题,容器与容器之间,容器与宿主机之间,容器跨主机访问,所以在涉及到容器的网络连接的时候要注意网络的问题。
9月5
Nacos微服务注册中心无法调用Docker容器中的服务
前言:
Nacos(注册中心)是通过 【 IP+PORT】 的形式调用其他服务。

问题:

Docker容器使用虚拟IP, 当Docker中的服务A,向Nacos注册的时候,Nacos获取到了Docker的内部IP, 导致另外一个服务B,想通过注册中心调用服务A, 但由于服务B从nacos注册中心获取到的是服务A的内部IP,这样导致了两个处于公网的微服务之间,无法互相访问!

解决办法:

将Docker中的服务网络配置与宿主机共用同一个IP, 此时服务向nacos注册的时候,nacos将会获取到宿主机的公网IP, 所以问题迎刃而解。

我的docker是使用docker-compose来启动的,具体配置如下:

version: '3'
services:
  iap-system:
    build:
      context: ./
      dockerfile: Dockerfile-system
    restart: always
    ports:
      - 19002:19002
    container_name: iap-system
    hostname: iap-system
    image: iap-system
    network_mode: "host"  # 与宿主机共有一个IP

当然,配置了上述网络类型后, nacos是可以拿到宿主机的IP, 但是此时拿到的是宿主机的内网IP, 解决办法如下:

spring:
  cloud:
    inetutils:
      ignored-interfaces: eth.*              # 忽略网卡,eth.*,正则表达式
      preferred-networks: ${discovery.server-ip}    # 选择符合前缀的IP作为服务注册IP, discovery.server-ip就是你的公网IP

解释:

启动 Docker的时候,用 --network 参数,可以指定网络类型

--network host

host: 主机网络使用 --network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的。 例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中。

结果:

Nacos注册中心获取到宿主机IP, 微服务之间调用成功!

如有帮助,请赞赏鼓励!
9月5
ocker 中的服务注册到nacos时默认是docker容器内网的IP地址,使用--network=host 是宿主机所在的局域网的ip 我想把公网ip注册到nacos上

可以使用以下两种方式:
1、如果docker网络采用的是主机模式即--network=host,那么这时候注册就是宿主机的ip。
2、nacos服务发现时添加ip即可。spring:
  cloud:
    nacos:
      discovery:
        ip: ${HOST:10.128.1.122}
8月30
一、第一种方式:指定docker的安装目录
1.修改配置文件

#编辑docker配置文件
vim /etc/docker/daemon.json

#配置文件内容:graph代表docker指定的安装目录
{
"registry-mirrors": ["http://hub-mirror.c.163.com"],
"graph":"/opt/docker"
}

2.然后开始安装docker

#安装yum工具
yum install yum-utils -y
#配置yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装docker
yum install -y docker-ce-19.03.9 docker-ce-cli-19.03.9 containerd.io
#加载镜像:
systemctl daemon-reload
#启动docker并且设置开机启动
systemctl enable docker && systemctl start docker

3.启动docker后观察docker的安装目录已经ok了。


二、第二种方式:使用软连接的方式
1.首先安装docker

#安装yum工具
yum install yum-utils -y
#配置yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装docker
yum install -y docker-ce-19.03.9 docker-ce-cli-19.03.9 containerd.io
#加载镜像加速站点:
systemctl daemon-reload
#启动docker并且设置开机启动
systemctl enable docker && systemctl start docker

默认的安装目录应该是: /var/lib/docker 。
为了完全确定,可以使用以下的命令查询真正的安装路径:
sudo docker info | grep "Docker Root Dir"

#将docker安装目录移动到/opt/docker
mv /var/lib/docker /opt/docker
#创建软连接
ln -s /opt/docker /var/lib/docker
#最后启动docker
systemctl start docker

2.查看/var/lib/docker目录大小,大小为0kb

#进入目录
cd /var/lib/docker
#查看当前目录大小,0kb
du -sh

以上就是两种docker指定安装目录的姿势。
8月24
正常情况下双击鼠标左键是打开文件,而现在却是打开了文件属性对话框,那遇到这种情况要如何解决呢?
点击在新窗口中浏览此图片

方法一:可以查看ALT键是不是处于按下状态。
点击在新窗口中浏览此图片

方法二:笔记本电脑可能开启了ALT键,按Fn+ALT组合键可以解锁。
点击在新窗口中浏览此图片
7月15
众所周知,CentOS 8 Linux 已于2021年底停止使用且不受社区支持。取而代之的是滚动版本 CentOS Stream,作为 RHEL 的上游分支,CentOS Stream 将持续排查漏洞,让上游版本更加稳定和安全。

但是,运行 CentOS 7 的服务器不会受到影响。他们与 RHEL 7 生命周期并行更新。RHEL 7 将在 2024 年结束其最后一个维护周期。

但是,如果您使用的是 CentOS 8,那么 2022 年有哪些替代方案?不幸的是,即使您找到了,服务器应用程序迁移也将是另一个挑战。然而,这里有一些选项可以在 2022 年取代 CentOS。

CentOS 8 Linux 的最佳替代品

1、Ubuntu/Debian
当然,每当我们谈论替代 CentOS 的服务器操作系统替代品时,Ubuntu LTS 版本将是第一选择。此外,Ubuntu OS 的使用和处理比 CentOS 容易得多,至少对我来说是这样。APT 包管理器以相当快的方式安装包。

另一方面,Ubuntu 拥有庞大的社区,提供在线教程和指南,用户可以在这些社区的帮助下自行解决各种问题和障碍,同时在 Ubuntu 或 Debian 上设置基于服务器的应用程序。

Ubuntu 当前长期支持的版本是 22.04 LTS,开发人员将在公共支持下支持到 2025 年,如果您想将其进一步扩展到 2030 年,则可以使用付费选项。

Ubuntu 每两年发布一个 LTS 版本,而标准版本是每六个月发布一次,支持期限为九个月。

2、Oracle linux
与具有 RPM 包管理的 CentOS 8 Linux 最接近的替代选项是 Oracle Enterprise。它也是免费和开源的,但为了获得支持,用户必须付费,否则,其余的一切都可以像 CentOS 一样免费使用。Oracle Linux 是从 RHEL 的源代码编译而来的,因此可以说它是 Red Hat Linux 的克隆,并且还提供了早期的安全更新。作为一个类似的基础,用户可以毫不费力地将他们的应用程序从 CentOS 8 迁移到 Oracle Linux 上的最新版本。

3、OpenSUSE

OpenSUSE 是一个一直被低估的多功能 Linux 操作系统,其中一个原因是与 Ubuntu 和 CentOS 相比,社区不那么广泛,以及在线教程和指南数量。它由 SUSE Software Solutions Germany GmbH 提供支持。默认情况下,OpenSUSE 使用 Delta RPM 和 ZYpp 包管理作为 SUSE 上的命令行包管理器。

它带有三个包管理工具,ZYpp 作为标准命令行工具,YaST 用于前端,RPM 用于更底层。

OpenSUSE 的次要版本每 12 个月发布一次,而主要版本大约在36-48 个月之后发布,这个发布周期类似于 Ubuntu。

4、AlmaLinux – CloudLinux 操作系统

基于 CentOS 操作系统且主要由托管服务提供商或 VPS 用户使用的 CloudLinux 操作系统宣布:

我们计划发布一个免费的、开源的、社区驱动的、1:1 二进制兼容的 RHEL® 8 分支(以及未来的版本)……我们将创建一个独立的、完全免费的、完全兼容二进制的操作系统使用 RHEL® 8(和未来版本)。我们将赞助此类操作系统的开发和维护。我们将努力建立一个围绕操作系统的社区,由社区成员组成管理委员会。

尽管如此,使用基于 CentOS 8 Linux 托管解决方案的 CloudLinux 的用户不必担心,因为他们将在 2029 年之前获得稳定且经过良好测试的更新。

5、Rocky Linux

在 RedHat 宣布放弃 CentOS 8 LTS 版本之后,立即有消息称 CentOS 的联合创始人 Gregory Kurtzer 将推出另一个基于 RHEL 软件包的 Linux 分支,称为“ Rocky Linux”,就像他对 CentOS 所做的那样。我希望这一次他不会像之前那样把同样的东西卖给 RedHat 或 IBM。Rocky Linux 是一种开源企业操作系统,旨在与 Red Hat Enterprise Linux 100% 兼容。

Rocky Linux 通过定期更新和 10 年的支持生命周期提供稳定的稳定性,所有这些都是免费的。
社区支持: 社区、赞助商和合作伙伴已投入长期承诺,以确保项目留在社区中。
轻松迁移: 毫不费力地从其他 Enterprise Linux 发行版迁移。我们免费提供易于使用的迁移脚本。

6、VzLinux

Virtuozzo 仅在内部使用 VzLinux 作为容器和虚拟机的客户操作系统。因此,由于它不是从外部分发的,因此这就是我们从未听说过 VzLinux 的原因。它也是基于 RedHat 的 Linux,如 Alma 和 Rocky Linux。

VzLinux 是一个免费的多用途发行版,经过优化,可在裸机服务器、虚拟机或容器上运行。它旨在支持密集的企业级应用程序和工作负载。Virtuozzo 已经准备好从 CentOS 迁移过程“无需停机”的发行版,并且它以 RHEL 的更新速度以及与 CentOS 相比的速度而自豪。

有兴趣试用 VzLinux ISO 的人可以访问Virtuozzo 提供的 VzLinux 官方下载页面或 repo。

7、Springdale Linux

Springdale Linux 以前称为 PUIAS Linux 是另一种 Linux 操作系统。它是由可用于 Red Hat Enterprise Linux 的源代码包构建的。除了官方的上游包,它还提供了其他几个附加包的存储库。该版本由美国高等研究院和普林斯顿大学维护。

作为管理员,您可以在您的服务器或桌面上试用它,更新不会像 CentOS 一样成为问题,它也依赖于其上游 RHEL Linux。需要注意的是,这个项目比 CentOS 更老。

总结

如果您使用的是 Amazon Cloud,那么 Amazon Linux 就在那里,而 GCP 提供了所有主要选项。另一方面,CentOS 7直到2024年才会到期,因此无需急于寻找和切换到 CentOS 替代品,尤其是服务器。当然,在 4 年内我们也将有更多可靠和稳定的选择来替代 CentOS 7,直到现在,使用 CentOS 6 的用户仍然可以考虑采用 Ubuntu、Debian、Oracle 或 OpenSUSE。尽管如此,没有什么大问题的桌面用户可以简单地将 CentOS 8 Linux 存储库迁移到 CentOS Stream 以进行定期更新。
7月6
需求分析

1、将excel数据导入数据库中;
2、利用uuid生成的32随机数作主键;
3、利用CURRENT_TIMESTAMP()生成时间;

具体操作

1、根据需要创建表结构
2、将excel数据导入刚创建的表中
注意: 为了能够将excel中的数据导入数据库中,创建数据库表时,暂时将主键去掉,只保留主键字段。
3、在id中生成uuid

UPDATE 表名 SET 列名= UUID();

注意:生成id时,不要直接将uuid()产生的序列中的’’-“通过Replace方法去掉,不然生成的id的将全部相同。
4、将生成的id中的”-"替换掉

UPDATE 表名 SET 列名 = (SELECT REPLACE(对应列名,'-',''));

5、生成时间

UPDATE 表名 SET 列名1 = CURRENT_TIMESTAMP();
分页: 4/63 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]