nginx+keepalived集群搭建

一:Nginx配置文件

(0)docker 镜像拉取

docker pull nginx:1.2.1

Nginx文件参考:nginx.zip压缩包,可在安装包下载,可放在data文件夹内,具体配置内容需根据服务器做变动

Docker搭建Nginx图片服务器集群 docker keepalive nginx集群_docker


(1)启动脚本内容需要修改成对应的路径

docker run --name dspNginx -p 80:80 -v /app/dspNginx/nginx.conf:/etc/nginx/nginx.conf -v /app/dspNginx/www/:/usr/share/nginx/ -v /app/dspNginx/logs/:/var/log/nginx/ -v /app/dspNginx/conf/conf.d:/etc/nginx/conf.d --privileged=true -d nginx:1.21

前端包,放在www/html文件夹下:

Docker搭建Nginx图片服务器集群 docker keepalive nginx集群_nginx_02

注意:需要修改的内容:
①start.sh:修改挂载地址
②Nginx.conf:修改代理地址

二:keepalived配置文件

(1)第一步:本地安装成功 修改keepalived.conf

cd  keepalived-2.2.7
 ./configure  --prefix=/usr/local/keepalived --sysconf=/etc
 make && make install
vim /etc/keepalived/keepalived.conf

主机keepalived.conf内容:
需要修改的内容:
① smtp_server 192.168.1.250 #服务器地址
② script “/usr/local/src/nginx_check.sh” #可自定义nginx检查文件地址
③ interface ens224 # 网卡,可根据ip addr查看
④ # VRRP H 虚拟地址 可多个

virtual_ipaddress {
     192.168.10.160
 } 
global_defs {
	 notification_email {
	    # 指定keepalived在发生切换时需要发送email到的对象,一行一个邮件地址
        acassen@firewall.loc
		 failover@firewall.loc
		 sysadmin@firewall.loc
	 }
	 # 指定
	 notification_email_from Alexandre.Cassen@firewall.loc
	 #服务器地址
	 smtp_server 192.168.1.250
	 #连接超时时间
	 smtp_connect_timeout 30
	 #hosts
	 router_id 02
}


	vrrp_script chk_http_port {
	 script "/usr/local/src/nginx_check.sh"
	 interval 2 #(检测脚本执行的间隔)
	 weight 2
	}
	
vrrp_instance VI_1 {
   # 备份服务器上将 MASTER 改为 BACKUP  必须大写
   state MASTER 
   #网卡
   interface ens224
   # 主、备机的 virtual_router_id 必须相同   
   virtual_router_id 51 
   # 主、备机取不同的优先级,主机值较大,备份机值较小
   priority 100 
   # 设定 MASTER 与 BACKUP 负载均衡之间同步检查的时间间隔,单位为秒,两个节点设置必须一样
   advert_int 1
   
 # 设置验证类型和密码,两个节点必须一致
 authentication {
	 auth_type PASS
	 auth_pass 1111
 }
  # VRRP H 虚拟地址 可多个
 virtual_ipaddress {
     192.168.10.160
 } 
 
 }

从机:

global_defs {
	 notification_email {
	    # 指定keepalived在发生切换时需要发送email到的对象,一行一个邮件地址
        acassen@firewall.loc
		 failover@firewall.loc
		 sysadmin@firewall.loc
	 }
	 # 指定
	 notification_email_from Alexandre.Cassen@firewall.loc
	 #服务器地址
	 smtp_server 192.168.1.247
	 #连接超时时间
	 smtp_connect_timeout 30
	 #hosts
	 router_id 02
}


	vrrp_script chk_http_port {
	 script "/usr/local/src/nginx_check.sh"
	 interval 2 #(检测脚本执行的间隔)
	 weight 2
	}


	vrrp_instance VI_1 {
   # 备份服务器上将 MASTER 改为 BACKUP  必须大写
   state BACKUP  
   #网卡
   interface ens224
   # 主、备机的 virtual_router_id 必须相同   
   virtual_router_id 51 
   # 主、备机取不同的优先级,主机值较大,备份机值较小
   priority 50
   # 设定 MASTER 与 BACKUP 负载均衡之间同步检查的时间间隔,单位为秒,两个节点设置必须一样
   advert_int 1
   
 # 设置验证类型和密码,两个节点必须一致
 authentication {
	 auth_type PASS
	 auth_pass 1111
 }
  # VRRP H 虚拟地址 可多个
 virtual_ipaddress {
     192.168.10.160
 } 
 
 }

(2)第二步:在/usr/local/src 添加检测脚本nginx_check.sh

#!/bin/bash
 A=ps -C nginx –no-header |wc -l if [ $A -eq 0 ];then
 /usr/local/nginx/sbin/nginx
 sleep 2
 if [ ps -C nginx --no-header |wc -l -eq 0 ];then
 killall keepalived
 fi


fi

(3)第三步:启动主从keepalived

systemctl start keepalived
Systemctl status keepalived

(4)第四步:查看虚拟IP是否绑定

ip addr

Docker搭建Nginx图片服务器集群 docker keepalive nginx集群_docker_03

(5)第五步:在浏览器输入虚拟IP进行测试,然后停止主机,再次访问 虚拟ip+nginx端口
例如:虚拟ip:8114