前期环境准备
- 2台虚拟机当作代理服务器
- 主机名:master,IP:192.168.80.20
- 主机名:backup,ip:192.168.80.21
- 2台虚拟机当网站服务器
- IP:192.168.80.35
- IP:192.168.80.36
#关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
#关闭SELinux(临时关闭)
[root@localhost ~]# setenforce 0
#修改配置文件永久关闭
[root@localhost ~]# vim /etc/selinux/config
...
SELINUX=disabled
#情况yum路径
[root@localhost ~]# rm -rf /etc/yum.repos.d/*
#创建挂载点
[root@localhost ~]# mkdir /mnt/centos
#挂载iso镜像文件
[root@localhost ~]# mount /dev/cdrom /mnt/centos/
#搭建本地yum源
[root@localhost ~]# vim /etc/yum.repos.d/local.repo
[local]
name=local_centos
baseurl=file:///mnt/centos
enabled=1
gpgcheck=0
#检测软件仓库可用性
[root@localhost ~]# yum repolist
#源码安装nginx软件依赖
[root@localhost ~]# yum -y install gcc pcre-devel openssl-devel
#解压源码包
[root@localhost ~]# tar -xf nginx-1.18.0.tar.gz
#进入源码路径
[root@localhost ~]# cd nginx-1.18.0
#检测环境
[root@localhost nginx-1.18.0]# ./configure
#编译安装
[root@localhost nginx-1.18.0]# make && make install
#网站服务器修改主机名(主机名与主机IP地址相对应)
[root@localhost ~]# hostnamectl set-hostname node1
[root@localhost ~]# hostnamectl set-hostname node2
#修改默认首页文件(首页文件内容与主机名相对应)
[root@node1 ~]# vim /usr/local/nginx/html/index.html
安装keepalived服务
#nginx+keepalived实现负载均衡高可用集群
#两台调度器安装keepalived服务
[root@nginx-master ~]# yum -y install keepalived
[root@nginx-packup ~]# yum -y install keepalived
#修改主服务器keepalived配置文件(两台调度器都要修改)
[root@nginx-proxy1 ~]# vim /etc/keepalived/keepalived.conf
1 ! Configuration File for keepalived
2
3 global_defs {
12 router_id 2
17 }
19 vrrp_instance VI_1 {
20 state MASTER #该服务器为主服务器,默认不需要改
21 interface ens33 #指定当前主机网卡
22 virtual_router_id 51 #服务器ID,默认不需要改
23 priority 100 #服务器优先级,默认不需要改
24 advert_int 1 #相互检测状态的时间,默认1秒钟检测一次,默认不需要改
25 authentication { #相互验证身份的方式,默认不需要改
26 auth_type PASS #密码认证,默认不需要改
27 auth_pass 1111 #密码,默认不需要改
28 }
29 virtual_ipaddress {
30 192.168.80.100 #指定VIP
33 }
34 }
#修改备用服务器keepalived配置文件
[root@nginx-proxy2 ~]# vim /etc/keepalived/keepalived.conf
1 ! Configuration File for keepalived
2
3 global_defs {
12 router_id 2
17 }
18
19 vrrp_instance VI_1 {
20 state BACKUP #指定改服务器为备用服务器
21 interface ens33 #指定服务器的网卡
22 virtual_router_id 51
23 priority 90 #指定优先级
24 advert_int 1
25 authentication {
26 auth_type PASS
27 auth_pass 1111
28 }
29 virtual_ipaddress {
30 192.168.80.10 #指定VIP
31 }
32 }
33
#启动服务并设置服务随机自启
[root@nginx-proxy1 ~]# systemctl start keepalived
[root@nginx-proxy1 ~]# systemctl enable keepalived
#备用服务器启动服务并设置服务随机自启
[root@nginx-proxy2 ~]# systemctl start keepalived
[root@nginx-proxy2 ~]# systemctl enable keepalived
#编写检测nginx状态脚本
[root@nginx-proxy1 ~]# vim /etc/keepalived/chk_nginx.sh
#!/bin/bash
conut=`ps -C nginx | grep -v PID | wc -l`
if [ $conut -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 5
conut=`ps -C nginx | grep -v PID | wc -l`
if [ $conut -eq 0 ];then
systemctl stop keepalived
fi
fi
#赋予脚本执行权限
[root@nginx-proxy1 ~]# chmod u+x /etc/keepalived/chk_nginx.sh
#停止nginx服务
[root@nginx-proxy1 ~]# /usr/local/nginx/sbin/nginx -s stop
#测试脚本
[root@nginx-proxy1 ~]# /etc/keepalived/chk_nginx.sh
#查看进程
[root@nginx-proxy1 ~]# ps -C nginx
PID TTY TIME CMD
62403 ? 00:00:00 nginx
62405 ? 00:00:00 nginx
#修改keepalived配置文件,指定监控脚本,并添加脚本为监控条件
[root@nginx-proxy1 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id 2
}
#指定脚本路径,定义监控项
vrrp_script chk_nginx {
script "/etc/keepalived/chk_nginx.sh"
interval 2
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
#调用监控项
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.80.10
}
}
#重启服务
[root@nginx-proxy1 ~]# systemctl restart keepalived