Nginx Keepalived dual active hot standby configuration

1 Principle of dual-system active and standby

Dual-active hot standby means that two servers are active and standby for each other. When one of the two Nginx servers goes down, services can be performed normally, thereby achieving high availability of the framework.

2 Host configuration

2.1 View the name of the network card

inet 192.168.51.6/24 brd 192.168.51.255 scope global ens33

ens33 Is the name of the network card

[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:50:56:26:f8:57 brd ff:ff:ff:ff:ff:ff
    inet 192.168.51.6/24 brd 192.168.51.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::250:56ff:fe26:f857/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
    link/ether 02:42:49:a9:d2:94 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
       valid_lft forever preferred_lft forever

2.2 Modify the configuration file

[root@localhost ~]# cd /etc/keepalived
[root@localhost keepalived]# vi keepalived.conf
global_defs {
	# 路由id:当前安装keepalived的节点主机标识符,保证全局唯一
	router_id keep_5
} 
vrrp_instance VI_1 {
	# 表示状态是MASTER主机还是备用机BACKUP
	state MASTER
	# 该实例绑定的网卡
	interface ens33
	# 保证主备节点一致即可
	virtual_router_id 51
	# 权重,master权重一般高于backup,如果有多个,那就是选举,谁的权重高,谁就当选
	priority 100
	# 主备之间同步检查时间间隔,单位秒
	advert_int 2
	# 认证权限密码,防止非法节点进入
authentication {
	auth_type PASS
	auth_pass 1111
} 
#	虚拟出来的ip,可以有多个(vip)
virtual_ipaddress {
	192.168.51.101
	}
}
vrrp_instance VI_2 {
	# 表示状态是MASTER主机还是备用机BACKUP
	state BACKUP
	# 该实例绑定的网卡
	interface ens33
	# 保证主备节点一致即可
	virtual_router_id 52
	# 权重,master权重一般高于backup,如果有多个,那就是选举,谁的权重高,谁就当选
	priority 80
	# 主备之间同步检查时间间隔,单位秒
	advert_int 2
	# 认证权限密码,防止非法节点进入
authentication {
	auth_type PASS
	auth_pass 1111
} 
#	虚拟出来的ip,可以有多个(vip)
virtual_ipaddress {
	192.168.51.102
	}
}

2.3 Start the service

[root@localhost ~]# cd /usr/local/keepalived/sbin/
[root@localhost sbin]# ./keepalived

2.4 View operation

[root@localhost sbin]# ps -ef | grep keepalived
root      10384      1  0 16:11 ?        00:00:00 ./keepalived
root      10385  10384  0 16:11 ?        00:00:00 ./keepalived
root      10387   3963  0 16:12 pts/1    00:00:00 grep --color=auto keepalived
[root@localhost sbin]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:50:56:37:75:55 brd ff:ff:ff:ff:ff:ff
    inet 192.168.51.5/24 brd 192.168.51.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.51.101/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::250:56ff:fe37:7555/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
    link/ether 02:42:99:71:38:eb brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
       valid_lft forever preferred_lft forever

3 Standby machine configuration

3.1 View the name of the network card

inet 192.168.51.6/24 brd 192.168.51.255 scope global ens33

ens33 Is the name of the network card

[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:50:56:26:f8:57 brd ff:ff:ff:ff:ff:ff
    inet 192.168.51.6/24 brd 192.168.51.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::250:56ff:fe26:f857/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
    link/ether 02:42:49:a9:d2:94 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
       valid_lft forever preferred_lft forever

3.2 Modify the configuration file

[root@localhost ~]# cd /etc/keepalived
[root@localhost keepalived]# vi keepalived.conf
global_defs {
	# 路由id:当前安装keepalived的节点主机标识符,保证全局唯一
	router_id keep_6
} 
vrrp_instance VI_1 {
	# 表示状态是MASTER主机还是备用机BACKUP
	state BACKUP
	# 该实例绑定的网卡
	interface ens33
	# 保证主备节点一致即可
	virtual_router_id 51
	# 权重低于MASTER
	priority 80
	# 主备之间同步检查时间间隔,单位秒
	advert_int 2
	# 认证权限密码,防止非法节点进入
authentication {
	auth_type PASS
	auth_pass 1111
} 
#	虚拟出来的ip,可以有多个(vip)
virtual_ipaddress {
	# 注意:主备两台的vip都是一样的,绑定到同一个vip
	192.168.51.101
	}
}
vrrp_instance VI_2 {
	# 表示状态是MASTER主机还是备用机BACKUP
	state MASTER
	# 该实例绑定的网卡
	interface ens33
	# 保证主备节点一致即可
	virtual_router_id 52
	# 权重低于MASTER
	priority 100
	# 主备之间同步检查时间间隔,单位秒
	advert_int 2
	# 认证权限密码,防止非法节点进入
authentication {
	auth_type PASS
	auth_pass 1111
} 
#	虚拟出来的ip,可以有多个(vip)
virtual_ipaddress {
	# 注意:主备两台的vip都是一样的,绑定到同一个vip
	192.168.51.102
	}
}

3.3 Start the service

[root@localhost ~]# cd /usr/local/keepalived/sbin/
[root@localhost sbin]# ./keepalived

3.4 View operation

[root@localhost etc]#  ps -ef | grep keepalived
root       9964      1  0 16:14 ?        00:00:00 ./keepalived
root       9965   9964  0 16:14 ?        00:00:00 ./keepalived
root      10011   3463  0 16:31 pts/1    00:00:00 grep --color=auto keepalived
[root@localhost etc]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:50:56:26:f8:57 brd ff:ff:ff:ff:ff:ff
    inet 192.168.51.6/24 brd 192.168.51.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::250:56ff:fe26:f857/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
    link/ether 02:42:49:a9:d2:94 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
       valid_lft forever preferred_lft forever

4 Registration Service

4.1 Copy files

[root@localhost etc]# cd /opt/module/software/keepalived-2.0.18/keepalived/etc/
[root@localhost etc]# ll
总用量 44
drwxrwxr-x. 2 ts   rvm     86 2月   1 15:31 init
drwxrwxr-x. 2 ts   rvm    135 2月   1 15:31 init.d
drwxrwxr-x. 2 ts   rvm     29 8月  16 2018 keepalived
-rw-r--r--. 1 root root 19576 2月   1 15:31 Makefile
-rw-rw-r--. 1 ts   rvm    181 8月  16 2018 Makefile.am
-rw-rw-r--. 1 ts   rvm  18377 7月  26 2019 Makefile.in
drwxrwxr-x. 2 ts   rvm     24 8月  16 2018 openrc
drwxrwxr-x. 2 ts   rvm     24 8月  16 2018 sysconfig
[root@localhost etc]# cp init.d/keepalived  /etc/init.d/
[root@localhost etc]# cp sysconfig/keepalived /etc/sysconfig/
cp:是否覆盖"/etc/sysconfig/keepalived"? y

4.2 Load configuration

[root@localhost etc]# systemctl daemon-reload

4.2 Commonly used commands

启动

[root@localhost ~]# systemctl start keepalived

停止

[root@localhost ~]# systemctl stop keepalived

重启

[root@localhost ~]# systemctl restart keepalived

5 Function test

5.1 Access to the host

Host 1: http://192.168.51.101

Host 2: http://192.168.51.102

5.2 Stop the host 2

[root@localhost nginx]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:50:56:37:75:55 brd ff:ff:ff:ff:ff:ff
    inet 192.168.51.5/24 brd 192.168.51.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.51.101/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.51.102/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::250:56ff:fe37:7555/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
    link/ether 02:42:99:71:38:eb brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
       valid_lft forever preferred_lft forever

Check on the host 1, you can see the virtual IP, all switched to the host 1, complete the dual-machine active and standby

6 Related information

  • The blog post is not easy, everyone who has worked so hard to pay attention and praise, thank you

Guess you like

Origin blog.csdn.net/qq_15769939/article/details/113584325