热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

keepalived实现lvs高可用

keeplaived实现lvs高可用名称ipnode1(lvs,keepalived)192.168.6.152node2(lvs,keepalived)192.168.6.153

keeplaived实现lvs高可用























名称ip
node1(lvs,keepalived)192.168.6.152
node2(lvs,keepalived)192.168.6.153
rs1192.168.6.135
rs2192.168.6.154

# 在Rs1,Rs2下载nginx写一个网页文件
[root@rs1 ~]# dnf -y install nginx
[root@rs1 ~]# echo 'rs1' > /usr/share/nginx/html/index.html
[root@rs1 ~]# systemctl enable --now nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.
[root@rs2 ~]# dnf -y install nginx
[root@rs2 ~]# echo 'rs2' > /usr/share/nginx/html/index.html
[root@rs2 ~]# systemctl enable --now nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.

 

# 在192.168.6.152 lvs 调度器上配置VIP和DIP
[root@node1 ~]# cd /etc/sysconfig/network-scripts/
[root@node1 network-scripts]# ls
ifcfg-ens160
[root@node1 network-scripts]# vim ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=static
NAME=ens160
DEVICE=ens160
OnBOOT=yes
IPADDR0=192.168.6.152
NETMASK=255.255.255.0
GATEWAY=192.168.6.2
DNS1=114.114.114.114
IPADDR1=192.168.6.250 # 加一个250的vip
NETMASK1=255.255.255.0 #添加一个子网掩码
[root@node1 network-scripts]# ifdown ens160;ifup ens160 # 虽然网卡起来了,但是走不了外网,应为有两个网关,我们可以配本地yum仓库
Connection 'ens160' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
[root@node1 network-scripts]# ip a #
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:d7:b0:2d brd ff:ff:ff:ff:ff:ff
inet 192.168.6.152/24 brd 192.168.6.255 scope global noprefixroute ens160
valid_lft forever preferred_lft forever
inet 192.168.6.250/24 brd 192.168.6.255 scope global secondary noprefixroute ens160
valid_lft forever preferred_lft forever
#配置本地yum仓库
[root@node1 ~]# cd /etc/yum.repos.d/
[root@node1 yum.repos.d]# ls
CentOS-Base.repo epel.repo epel-testing.repo
epel-modular.repo epel-testing-modular.repo
[root@node1 yum.repos.d]# mv * /opt/ # 把配好的阿里云的yum源移走
[root@node1 yum.repos.d]# ls
[root@node1 yum.repos.d]# mount /dev/cdrom /mnt/ # 挂载镜像
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@node1 yum.repos.d]# vi xx.repo # 配置本地源
[appstream]
name=appstream
baseurl=file:///mnt/AppStream
gpgcheck=0
enabled=1
[baseos]
name=baseos
baseurl=file:///mnt/BaseOS
gpgcheck=0
enabled=1
[root@node1 yum.repos.d]# yum clean all
36 files removed
[root@node1 yum.repos.d]# yum makecache

# 在192.168.6.153 lvs 调度器上配置VIP和DIP
[root@node2 ~]# cd /etc/sysconfig/network-scripts/
[root@node2 network-scripts]# vim ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=static
NAME=ens160
DEVICE=ens160
OnBOOT=yes
IPADDR0=192.168.6.153
NETMASK=255.255.255.0
GATEWAY=192.168.6.2
DNS1=114.114.114.114
IPADDR1=192.168.6.250
NETMASK1=255.255.255.0
[root@node2 network-scripts]# ifdown ens160;ifup ens160

[root@node2 network-scripts]# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:42:d0:bc brd ff:ff:ff:ff:ff:ff
inet 192.168.6.153/24 brd 192.168.6.255 scope global noprefixroute ens160
valid_lft forever preferred_lft forever
inet 192.168.6.250/24 brd 192.168.6.255 scope global secondary noprefixroute ens160
valid_lft forever preferred_lft forever


[root@node2 ~]# cd /etc/yum.repos.d/
[root@node2 yum.repos.d]# ls
CentOS-Base.repo epel.repo epel-testing.repo
epel-modular.repo epel-testing-modular.repo
[root@node2 yum.repos.d]# mv * /opt/
[root@node2 yum.repos.d]# ls

[root@node2 yum.repos.d]# mount /dev/cdrom /mnt/
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@node2 yum.repos.d]# vi xx.repo


[root@node2 yum.repos.d]# yum clean all
36 files removed
[root@node2 yum.repos.d]# yum makecache

[appstream]
name=appstream
baseurl=file:///mnt/AppStream
gpgcheck=0
enabled=1
[baseos]
name=baseos
baseurl=file:///mnt/BaseOS
gpgcheck=0
enabled=1

 

#在R1和R2上配置RIP
[root@rs1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=static
NAME=ens160
DEVICE=ens160
OnBOOT=yes
IPADDR=192.168.6.135
NETMASK=255.255.255.0
GATEWAY=192.168.6.2
DNS1=114.114.114.114
[root@rs1 ~]# ifdown ens160;ifup ens160
[root@rs2 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=static
NAME=ens160
DEVICE=ens160
OnBOOT=yes
IPADDR=192.168.6.154
NETMASK=255.255.255.0
GATEWAY=192.168.6.2
DNS1=114.114.114.114
[root@rs2 ~]# ifdown ens160;ifup ens160

[root@rs1 ~]# vi /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.conf.all.arp_ignore = 1 #添加
net.ipv4.conf.all.arp_announce = 2
[root@rs1 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@rs2 ~]# vi /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@rs2 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

#在RS1和RS2上配置VIP
[root@rs1 ~]# yum -y install net-tools
[root@rs1 ~]# ifconfig lo:0 192.168.6.250/32 broadcast 192.168.6.250 up
[root@rs1 ~]# ifconfig lo:0 192.168.6.250/32 broadcast 192.168.6.250 up
[root@rs1 ~]# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet 192.168.6.250/0 brd 192.168.6.250 scope global lo:0
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:e2:21:19 brd ff:ff:ff:ff:ff:ff
inet 192.168.6.135/24 brd 192.168.6.255 scope global noprefixroute ens160
valid_lft forever preferred_lft forever
[root@rs1 ~]# route add -host 192.168.6.180 dev lo
[root@rs1 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.6.2 0.0.0.0 UG 100 0 0 ens160
192.168.6.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160
192.168.6.180 0.0.0.0 255.255.255.255 UH 0 0 0 lo
[root@rs2 ~]# yum -y install net-tools
[root@rs2 ~]# ifconfig lo:0 192.168.6.250/32 broadcast 192.168.6.250 up
[root@rs2 ~]# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet 192.168.6.250/0 brd 192.168.6.250 scope global lo:0
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: mtu 1500 qdisc fq_codel state UP group defaultqlen 1000
link/ether 00:0c:29:bf:50:39 brd ff:ff:ff:ff:ff:ff
inet 192.168.6.154/24 brd 192.168.6.255 scope global noprefixroute ens160
valid_lft forever preferred_lft forever
[root@rs2 ~]# route add -host 192.168.6.180 dev lo
[root@rs2 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.6.2 0.0.0.0 UG 100 0 0 ens160
192.168.6.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160
192.168.6.180 0.0.0.0 255.255.255.255 UH 0 0 0 lo

#node1 node2 添加规则并且保存
[root@node1 ~]# yum -y install ipvsadm
[root@node1 ~]# ipvsadm -A -t 192.168.6.250:80 -s rr
[root@node1 ~]# ipvsadm -a -t 192.168.6.250:80 -r 192.168.6.135:80 -g
[root@node1 ~]# ipvsadm -a -t 192.168.6.250:80 -r 192.168.6.154:80 -g
[root@node1 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.6.250:80 rr
-> 192.168.6.135:80 Route 1 0 0
-> 192.168.6.154:80 Route 1 0 0
[root@node1 ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@node1 ~]# systemctl enable ipvsadm
Created symlink /etc/systemd/system/multi-user.target.wants/ipvsadm.service → /usr/lib/systemd/system/ipvsadm.service.
[root@node1 ~]# echo "ipvsadm -R >/etc/rc.d/rc.local
[root@node2 yum.repos.d]# yum -y install ipvsadm
[root@node2 ~]# ipvsadm -A -t 192.168.6.250:80 -s rr
[root@node2 ~]# ipvsadm -a -t 192.168.6.250:80 -r 192.168.6.135:80 -g
[root@node2 ~]# ipvsadm -a -t 192.168.6.250:80 -r 192.168.6.154:80 -g
[root@node2 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.6.250:80 rr
-> 192.168.6.135:80 Route 1 0 0
-> 192.168.6.154:80 Route 1 0 0
[root@node2 ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@node2 ~]# echo "ipvsadm -R >/etc/rc.d/rc.local

 

 


下载keepalived配置主keepalived

[root@node1 ~]# dnf -y install keepalived # 下载
[root@node1 ~]# cd /etc/keepalived/
[root@node1 keepalived]# ls
keepalived.conf
[root@node1 keepalived]# cp keepalived.conf{,.aa} #复制一个原本默认的配置文件修改名字备份一下
[root@node1 keepalived]# ls
keepalived.conf keepalived.conf.aa
[root@node1 keepalived]# > keepalived.conf #内容清空
[root@node1 keepalived]# vim keepalived.conf #编辑主配置文件
! Configuration File for keepalived
global_defs { # 全局配置
router_id lb01
}
vrrp_instance VI_1 { #定义实例
state MASTER # 定义keepalived节点的初始状态,可以为MASTER和BACKUP
interface ens160 # VRRP实施绑定的网卡接口,
virtual_router_id 51 # 虚拟路由的ID,同一集群要一致
priority 100 #定义优先级,按优先级来决定主备角色优先级越大越有限
advert_int 1 # 主备通讯时间间隔
authentication { #配置认证
auth_type PASS #认证方式此处为密码
auth_pass 023654 # 修改密码
}
virtual_ipaddress { #要使用的VIP地址
192.168.6.250 # 修改vip
}
}
virtual_server 192.168.6.250 80 { # 配置虚拟服务器
delay_loop 6 # 健康检查时间间隔
lb_algo rr # lvs调度算法
lb_kind DR #lvs模式
persistence_timeout 50 #持久化超时时间,单位是秒
protocol TCP #4层协议
real_server 192.168.6.152 80 { # 定义真实处理请求的服务器
weight 1 # 给服务器指定权重,默认为1
TCP_CHECK {
connect_port 80 #端口号为80
connect_timeout 3 # 连接超时时间
nb_get_retry 3 # 连接次数
delay_before_retry 3 # 在尝试之前延迟多少时间
}
}
real_server 192.168.6.153 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
[root@node1 keepalived]# systemctl enable --now keepalived # 启动并开机自启
Created symlink /etc/systemd/system/multi-user.target.wants/keepalived.service → /usr/lib/systemd/system/keepalived.service.
[root@node1 keepalived]# systemctl status keepalived # 查看状态
● keepalived.service - LVS and VRRP High Availability Monitor
Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled; vendor preset: disa>
Active: active (running) since Thu 2022-09-01 23:57:20 CST; 10s ago
Process: 11618 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/>
Main PID: 11620 (keepalived)
Tasks: 3 (limit: 11202)
Memory: 2.1M
CGroup: /system.slice/keepalived.service
├─11620 /usr/sbin/keepalived -D
├─11621 /usr/sbin/keepalived -D
└─11622 /usr/sbin/keepalived -D

下载keepalived配置备keepalived

[root@node2 ~]# dnf -y install keepalived
[root@node2 ~]# cd /etc/keepalived/
[root@node2 keepalived]# ls
keepalived.conf
[root@node2 keepalived]# cp keepalived.conf{,.aa}
[root@node2 keepalived]# > keepalived.conf
[root@node2 keepalived]# vim keepalived.conf
! Configuration File for keepalived
global_defs {
router_id lb02
}
vrrp_instance VI_1 {
state BACKUP
interface ens160
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 023654
}
virtual_ipaddress {
192.168.6.250
}
}
virtual_server 192.168.6.250 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.6.152 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.6.153 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
[root@node2 keepalived]# systemctl enable --now keepalived #启动并设置开机自启
Created symlink /etc/systemd/system/multi-user.target.wants/keepalived.service → /usr/lib/systemd/system/keepalived.service.
[root@node2 keepalived]# systemctl status keepalived # 查看状态
● keepalived.service - LVS and VRRP High Availability Monitor
Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled; vendor preset: disa>
Active: active (running) since Fri 2022-09-02 00:02:04 CST; 12s ago
Process: 15241 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/>
Main PID: 15242 (keepalived)
Tasks: 3 (limit: 11202)
Memory: 2.4M
CGroup: /system.slice/keepalived.service
├─15242 /usr/sbin/keepalived -D
├─15243 /usr/sbin/keepalived -D
└─15244 /usr/sbin/keepalived -D

查看VIP在哪里

# 在MASTER上查看
[root@node1 keepalived]# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:d7:b0:2d brd ff:ff:ff:ff:ff:ff
inet 192.168.6.152/24 brd 192.168.6.255 scope global noprefixroute ens160
valid_lft forever preferred_lft forever
inet 192.168.6.250/32 scope global ens160 # vip在主节点上
valid_lft forever preferred_lft forever
inet 192.168.6.250/24 brd 192.168.6.255 scope global secondary noprefixroute ens160
valid_lft forever preferred_lft forever
#在SLAVE上查看
[root@node2 keepalived]# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:42:d0:bc brd ff:ff:ff:ff:ff:ff
inet 192.168.6.153/24 brd 192.168.6.255 scope global noprefixroute ens160
valid_lft forever preferred_lft forever
inet 192.168.6.250/24 brd 192.168.6.255 scope global secondary noprefixroute ens160
valid_lft forever preferred_lft forever

让keepalived监控lvs
keepalived通过脚本来监控lvs的状态
在node1上编写脚本

[root@node1 ~]# mkdir /scripts
[root@node1 ~]# cd /scripts/
[root@node1 scripts]# vim notify.sh
#!/bin/bash
case "$1" in
master)
ipvsadm -R ;;
backup)
ipvsadm -C
;;
*)
echo "Usage:$0 master|backup"
;;
esac

[root@node1 scripts]# chmod +x notify.sh
[root@node1 scripts]# ll
total 4
-rwxr-xr-x 1 root root 178 Sep 2 00:43 notify.sh

 

在node2上编写脚本

[root@node2 keepalived]# vim /etc/keepalived/keepalived.conf
[root@node2 keepalived]# mkdir /scripts
[root@node2 keepalived]# cd /scripts/
[root@node2 scripts]# vim notify.sh
#!/bin/bash
case "$1" in
master)
ipvsadm -R ;;
backup)
ipvsadm -C
;;
*)
echo "Usage:$0 master|backup"
;;
esac

[root@node2 scripts]# chmod +x notify.sh
[root@node2 scripts]# ll
total 4
-rwxr-xr-x 1 root root 178 Sep 2 00:47 notify.sh

 

配置keepalived加入监控脚本的配置

配置node1上的keepalived

加入脚本

 

[root@node1 scripts]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id lb01
}
vrrp_instance VI_1 {
state BACKUP #不抢占此处都为备 ,如果设置抢占把两边的nopreempt都删除掉,此处改为MASTER为主
interface ens160
virtual_router_id 51
priority 100
nopreempt # 设置的不抢占,
advert_int 1
authentication {
auth_type PASS
auth_pass 023654
}
virtual_ipaddress {
192.168.6.250
}
notify_master "/scripts/notify.sh master 192.168.6.250"
notify_backup "/scripts/notify.sh backup 192.168.6.250"
}
virtual_server 192.168.6.250 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.6.152 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.6.153 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

[root@node1 scripts]# systemctl restart keepalived
[root@node1 scripts]# systemctl status keepalived
● keepalived.service - LVS and VRRP High Availability Monitor
Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled; vendor preset: disa>
Active: active (running) since Fri 2022-09-02 00:57:07 CST; 9s ago
Process: 11678 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/>
Main PID: 11679 (keepalived)
Tasks: 3 (limit: 11202)
Memory: 3.0M
CGroup: /system.slice/keepalived.service
├─11679 /usr/sbin/keepalived -D
├─11680 /usr/sbin/keepalived -D
└─11681 /usr/sbin/keepalived -D

 

配置node2上的keepalived

加入脚本

[root@node2 scripts]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id lb02
}
vrrp_instance VI_1 {
state BACKUP # 不抢占模式必须都为备
interface ens160
virtual_router_id 51
priority 90
nopreempt # 不抢占
advert_int 1
authentication {
auth_type PASS
auth_pass 023654
}
virtual_ipaddress {
192.168.6.250
}
notify_master "/scripts/notify.sh master 192.168.6.250"
notify_backup "/scripts/notify.sh backup 192.168.6.250"
}
}
virtual_server 192.168.6.250 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.6.152 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.6.153 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

[root@node2 scripts]# systemctl restart keepalived
[root@node2 scripts]# systemctl status keepalived
● keepalived.service - LVS and VRRP High Availability Monitor
Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled; vendor preset: disa>
Active: active (running) since Fri 2022-09-02 00:57:58 CST; 8s ago
Process: 15273 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/>
Main PID: 15274 (keepalived)
Tasks: 3 (limit: 11202)
Memory: 3.2M
CGroup: /system.slice/keepalived.service
├─15274 /usr/sbin/keepalived -D
├─15276 /usr/sbin/keepalived -D
└─15277 /usr/sbin/keepalived -D

 

验证,模拟node1出现故障,此处是不抢占模式

# 先查看状态node1,vip还在手里
[root@node1 scripts]# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:d7:b0:2d brd ff:ff:ff:ff:ff:ff
inet 192.168.6.152/24 brd 192.168.6.255 scope global noprefixroute ens160
valid_lft forever preferred_lft forever
inet 192.168.6.250/32 scope global ens160 # vip
valid_lft forever preferred_lft forever
inet 192.168.6.250/24 brd 192.168.6.255 scope global secondary noprefixroute ens160
valid_lft forever preferred_lft forever
#查看node2,没有vip
[root@node2 scripts]# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:42:d0:bc brd ff:ff:ff:ff:ff:ff
inet 192.168.6.153/24 brd 192.168.6.255 scope global noprefixroute ens160
valid_lft forever preferred_lft forever
inet 192.168.6.250/24 brd 192.168.6.255 scope global secondary noprefixroute ens160
valid_lft forever preferred_lft forever
# 关掉node1
[root@node1 scripts]# init 0
#查看node2,在node1出现故障的时候抢占了vip成为主,继续让服务运行,从而达到主备故障切换
[root@node2 scripts]# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:42:d0:bc brd ff:ff:ff:ff:ff:ff
inet 192.168.6.153/24 brd 192.168.6.255 scope global noprefixroute ens160
valid_lft forever preferred_lft forever
inet 192.168.6.250/32 scope global ens160 # 有vip了
valid_lft forever preferred_lft forever
inet 192.168.6.250/24 brd 192.168.6.255 scope global secondary noprefixroute ens160
valid_lft forever preferred_lft forever

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • Firefox火狐浏览器关闭到http://detectportal.firefox.com的流量问题解决办法
    本文介绍了使用Firefox火狐浏览器时出现关闭到http://detectportal.firefox.com的流量问题,并提供了解决办法。问题的本质是因为火狐默认开启了Captive portal技术,当连接需要认证的WiFi时,火狐会跳出认证界面。通过修改about:config中的network.captive-portal-service.en的值为false,可以解决该问题。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 解决github访问慢的问题的方法集锦
    本文总结了国内用户在访问github网站时可能遇到的加载慢的问题,并提供了解决方法,其中包括修改hosts文件来加速访问。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • Unity3D引擎的体系结构和功能详解
    本文详细介绍了Unity3D引擎的体系结构和功能。Unity3D是一个屡获殊荣的工具,用于创建交互式3D应用程序。它由游戏引擎和编辑器组成,支持C#、Boo和JavaScript脚本编程。该引擎涵盖了声音、图形、物理和网络功能等主题。Unity编辑器具有多语言脚本编辑器和预制装配系统等特点。本文还介绍了Unity的许可证情况。Unity基本功能有限的免费,适用于PC、MAC和Web开发。其他平台或完整的功能集需要购买许可证。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  • 本文介绍在使用vmware中配置centos6.5时遇到的网络问题,包括host-only和natip的配置,以及无法上网的原因。同时提供了解决方法,包括去掉host-only配置文件中的gateway。 ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
author-avatar
心窝子难受呢
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有