nginx+keepalived搭建
搭建环境
系统版本:CentOS Linux release 7.9.2009 (Core)
nginx版本:nginx-1.12.2.tar.gz
keepalived版本:keepalived-1.2.13.tar.gz
服务器4台
设备1:192.168.217.15 安装nginx keepalived
设备2:192.168.217.16 安装 nginx keepalived
设备3:192.168.217.17 安装httpd*
设备4:192.168.217.18 安装httpd*
设备1、设备2
安装ngixn keepalived
nginx
[root@localhost ~]# yum -y install gcc gcc-c++ zlib zlib-devel pcre pcre-devel openssl openssl-devel
[root@localhost ~]# tar -zxf nginx-1.12.2.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/nginx-1.12.2/
[root@localhost nginx-1.12.2]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
[root@localhost nginx-1.12.2]# make && make install
[root@localhost nginx-1.12.2]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
[root@localhost nginx-1.12.2]# vim /usr/local/nginx/conf/nginx.conf
35行添加 (反向代理)
upstream apache{
server 192.168.217.17 max_fails=2 fail_timeout=30; #两台Apache的IP
server 192.168.217.18 max_fails=2 fail_timeout=30;
}
……
location / {
# root html; #注释掉
# index index.html index.htm; #注释掉
proxy_pass http://apache; #添加此信息 (负载均衡)
}
[root@localhost nginx-1.12.2]# vim /etc/rc.d/init.d/nginx
#!/bin/bash
#chkconfig: 35 85 21
case $1 in
start)
/usr/local/sbin/nginx
;;
stop)
killall -9 nginx
rm -f /var/run/nginx.pid
;;
restart)
$0 stop
$0 start
;;
*)
echo "start|stop|restart"
;;
esac
[root@localhost nginx-1.12.2]# chmod +x /etc/rc.d/init.d/nginx
[root@localhost nginx-1.12.2]# chkconfig --add nginx
[root@localhost nginx-1.12.2]# chkconfig nginx on
[root@localhost nginx-1.12.2]# systemctl restart nginx
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
此处如有报错 检查配置文件或杀掉进程
root@localhost nginx-1.12.2]# killall -9 nginx
检查配置文件
[root@localhost nginx-1.12.2]# nginx -t
重启
[root@localhost nginx-1.12.2]# nginx
或
[root@localhost nginx-1.12.2]# systemctl restart nginx
查看状态
root@localhost nginx-1.12.2]# systemctl status nginx.service
[root@localhost keepalived-1.2.13]# systemctl stop firewalld
安装keepalived依赖
[root@localhost ~]# yum -y install popt-devel kernel-devel [root@localhost ~]# tar -zxf keepalived-1.2.13.tar.gz -C /usr/src/ [root@localhost ~]# cd /usr/src/keepalived-1.2.13/ [root@localhost keepalived-1.2.13]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernel && make && make install
设备1 为主设备 设备2为从设备
[root@localhost keepalived-1.2.13]# vim /etc/keepalived/keepalived.conf
vrrp_script chk_nginx { #添加此处信息
script '/etc/keepalived/check_nginx.sh'
interval 2 #间隔时间
weight -20 #权重
}
vrrp_instance VI_1 {
state BACKUP #主调度器的初始角色(本实验主备MASTER 从BACKUP)
interface ens33 #虚拟ip工作的网卡接口 (必修改按实际本机网卡修改)
virtual_router_id 51 #虚拟路由ID
priority 90 #主调度器的选举优先级 (本实验 主备100 从90 数据越大 优先级越高)
advert_int 1
authentication {
auth_type PASS #集群主机认证方式
auth_pass 1111 #秘钥,最长8位
}
virtual_ipaddress {
192.168.217.150 #虚拟ip (本实验需设置 同网段 主从一样)
}
}
[root@localhost keepalived-1.2.13]# service keepalived start
[root@localhost keepalived-1.2.13]# vim /etc/keepalived/check_nginx.sh
#!/bin/bash
killall -0 nginx
if [$? -ne 0]
then
/etc/init.d/keepalived stop
fi
重启keepalived
[root@localhost keepalived-1.2.13]# service keepalived start
关闭防火墙
[root@localhost keepalived-1.2.13]# systemctl stop firewalld
设备3
[root@localhost ~]# yum -y install httpd* [root@localhost ~]# echo apache1> /var/www/html/index.html [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl restart httpd [root@localhost ~]# curl 192.168.217.17 apache1
设备4
[root@localhost ~]# yum -y install httpd* [root@localhost ~]# echo apache2> /var/www/html/index.html [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl restart httpd [root@localhost ~]# curl 192.168.217.18 apache2
设备1 验证
查看ip
[root@localhost keepalived-1.2.13]# ip a 2: ens33:mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:6e:c0:67 brd ff:ff:ff:ff:ff:ff inet 192.168.217.15/24 brd 192.168.217.255 scope global noprefixroute ens33 valid_lft forever preferred_lft forever inet 192.168.217.150/32 scope global ens33 #虚拟IP valid_lft forever preferred_lft forever inet6 fe80::7669:cb:8738:7e48/64 scope link noprefixroute valid_lft forever preferred_lft forever [root@localhost keepalived-1.2.13]# curl 192.168.217.17 apache1 [root@localhost keepalived-1.2.13]# curl 192.168.217.18 apache2 [root@localhost keepalived-1.2.13]# curl 127.0.0.1 apache1 [root@localhost keepalived-1.2.13]# curl 127.0.0.1 apache2 [root@localhost keepalived-1.2.13]# curl 192.168.217.17 apache1 [root@localhost keepalived-1.2.13]# curl 192.168.217.150 apache1 [root@localhost keepalived-1.2.13]# curl 192.168.217.150 apache2
设备2
[root@localhost keepalived-1.2.13]# curl 192.168.217.17 apache1 [root@localhost keepalived-1.2.13]# curl 192.168.217.18 apache2 [root@localhost keepalived-1.2.13]# curl 127.0.0.1 apache1 [root@localhost keepalived-1.2.13]# curl 127.0.0.1 apache2 [root@localhost keepalived-1.2.13]# curl 192.168.217.150 apache1 [root@localhost keepalived-1.2.13]# curl 192.168.217.150 apache2
当主设备宕机
设备1
关闭nginx
[root@localhost keepalived-1.2.13]# systemctl stop nginx [root@localhost keepalived-1.2.13]# killall -9 nginx nginx: no process found
关闭keepalived
[root@localhost keepalived-1.2.13]# systemctl stop keepalived
设备2
[root@localhost keepalived-1.2.13]# ip a 2: ens33:mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:42:f4:b8 brd ff:ff:ff:ff:ff:ff inet 192.168.217.16/24 brd 192.168.217.255 scope global noprefixroute ens33 valid_lft forever preferred_lft forever inet 192.168.217.150/32 scope global ens33 #查看次处发现 飘逸ip已经转移到设备2 valid_lft forever preferred_lft forever inet6 fe80::aefb:d897:b41b:4691/64 scope link noprefixroute valid_lft forever preferred_lft forever
漂移设备访问 正常
[root@localhost keepalived-1.2.13]# curl 192.168.217.150 apache1 [root@localhost keepalived-1.2.13]# curl 192.168.217.150 apache2 [root@localhost keepalived-1.2.13]# curl 192.168.217.150 apache1
实验结束



