1.首先安裝環境準備
yum install popt-devel openssl openssl-devel libssl-dev libnl-devel popt-devel -y
yum -y install kernel kernel-devel
2.上傳nginx至服務器.解壓已經上線好的安裝包
tar -zxvf nginx-1.18.0.tar.gz
3.進入解壓目錄進行編譯
./configure --user=nginx --group=nginx --prefix=/application/nginx-1.18.0 --with-http_stub_status_module --with-http_ssl_module
4.添加用戶組 nginx
useradd nginx -s /sbin/nologin -M
啓動nginx
/application/nginx-1.18.0/sbin/nginx #啓動nginx
查看進程 ,nginx安裝完成 keeplived 安裝
安裝準備 keepalived-2.0.10.tar.gz
解壓 文件
tar -zxvf keepalived-2.0.10.tar.gz
cd keepalived-2.0.10/
進行解壓目錄進行編譯
./configure --prefix=/usr/local/keepalived
make
make install
創建keeplived根目錄,拷貝文件到想到的目錄
mkdir /etc/keepalived/
cp /root/soft/keepalived-2.0.10/keepalived/etc/init.d/keepalived /etc/init.d/ #執行命令
/root/soft/keepalived-2.0.10/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /root/soft/keepalived-2.0.10/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ #配置文件路徑
啓動keepalived
service keepalived start
設置開機啓動
chkconfig keepalived on
作相同的配置:整臺主機
master | slave |
192.168.1.110 | 192.168.1.111 |
虛擬ip 192.168.1.188
master配置
[root@nginx02 soft]# vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_01 #serverid相當於
#vrrp_skip_check_adv_addr
#vrrp_strict
#vrrp_garp_interval 0
#vrrp_gna_interval 0
}
vrrp_script chk_nginx {
script "/application/nginx-1.18.0/check_nginx.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100 #權重 差50主從
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.188/24 #虛擬VIP
}
track_script {
chk_nginx
}
slave配置
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_02 #標識id 下面的全部註釋
#vrrp_skip_check_adv_addr
#vrrp_strict
#vrrp_garp_interval 0
#vrrp_gna_interval 0
}
vrrp_script chk_nginx {
script "/application/nginx-1.18.0/check_nginx.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP #從節點backUP 主節點 MASTER
interface eth0
virtual_router_id 51 #不要改,主從到一致
priority 50 #相當於權重
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.188/24 #準備好了虛擬vip,兩邊一致
}
track_script {
chk_nginx
}
}
重啓keepalived
service keepalived stop
service keepalived start
進行主機切換
ip addr
[root@nginx01 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fa:16:3e:0c:16:c7 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.110/24 brd 10.18.51.255 scope global noprefixroute dynamic eth0
valid_lft 57780sec preferred_lft 57780sec
inet 192.168.1.188/24 scope global secondary eth0
valid_lft forever preferred_lft forever
inet6 fe80::b77f:a5a3:fce9:b068/64 scope link tentative noprefixroute dadfailed
valid_lft forever preferred_lft forever
inet6 fe80::6075:b0ef:4dc0:160/64 scope link tentative noprefixroute dadfailed
valid_lft forever preferred_lft forever
inet6 fe80::83f4:aec2:32a8:5aa6/64 scope link tentative noprefixroute dadfailed
valid_lft forever preferred_lft forever
虛擬VIP已經綁定,停掉master ,slave自動 接管
[root@nginx01 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fa:16:3e:0c:16:c7 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.111/24 brd 10.18.51.255 scope global noprefixroute dynamic eth0
valid_lft 57780sec preferred_lft 57780sec
inet 192.168.1.188/24 scope global secondary eth0
valid_lft forever preferred_lft forever
inet6 fe80::b77f:a5a3:fce9:b068/64 scope link tentative noprefixroute dadfailed
valid_lft forever preferred_lft forever
inet6 fe80::6075:b0ef:4dc0:160/64 scope link tentative noprefixroute dadfailed
valid_lft forever preferred_lft forever
inet6 fe80::83f4:aec2:32a8:5aa6/64 scope link tentative noprefixroute dadfailed
valid_lft forever preferred_lft forever
腳本 script "/application/nginx-1.18.0/check_nginx.sh"
#!/bin/bash
if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ]
then
/application/nginx-1.18.0/sbin/nginx
sleep 5
if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ]
then
killall keepalived
fi
fi