nginx+keepealived 部署高可用
nginx用docker部署
1、安装docker 2、拉取nginx镜像:docker pull nginx 3、启动nginx:docker run -d -p 80:80 --name nginx nginx:latest 4、新建相关目录和文件夹(用来挂载容器内的文件): ·mkdir -p /opt/nginx/{logs,conf,conf.d} ·touch /opt/nginx/logs/{access.log,error.log} 5、拷贝容器内的配置文件到本机: ·docker cp nginx:/etc/nginx/nginx.conf /opt/nginx/conf ·docker cp nginx:/etc/nginx/conf.d/default.conf /opt/nginx/conf.d ·docker cp nginx:/usr/local/nginx/html /opt/nginx/ 6、删除容器: ·docker rm -f nginx 7、启动容器并挂载文件: docker run -d --name nginx -p 80:80 \ -v /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /opt/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \ -v /opt/nginx/html:/usr/share/nginx/html \ -v /opt/nginx/logs:/var/log/nginx \ nginx:latest 8、测式、配置负载均衡即可
安装配置keepalived
1、下载包到opt目录下:wget https://www.keepalived.org/software/keepalived-2.0.20.tar.gz 2、解压:tar -xf keepalived-2.0.20.tar.gz 3、安装依赖: ·yum install -y gcc openssl-devel popt-devel 4、到解压后的目录下: ·cd /opt/keepalived-2.0.20 5、编译安装 ·创建目录:mkdir /usr/local/keepalived ·./configure --prefix=/usr/local/keepalived #指定安装路径 ·make && make install 6、拷贝文件到相应的目录下: ·cp /opt/keepalived-2.0.20/keepalived/etc/init.d/keepalived /etc/init.d/ #拷贝安装包下的文件 · mkdir /etc/keepalived #创建目录 ·cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ #拷贝安装目录下的文件 ·cp /opt/keepalived-2.0.20/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ #拷贝安装包下的文件 ·cp /usr/local/keepalived/sbin/keepalived /usr/sbin/ #拷贝安装目录下的文件 7、配置keepalived配置文件: ·vim /etc/keepalived/keepalived.conf ------------------------------------------------------ ! Configuration File for keepalived global_defs { #keepalived机器标识,无特殊作用,一般为机器名 router_id LVS_DEVEL } # 检查nginx状态的脚本,健康监测脚本、chk_nginx为脚本名 vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" # 脚本路径 interval 2 # 脚本执行间隔时间 weight -20 } vrrp_instance VI_1 { state BACKUP interface ens33 # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡 virtual_router_id 100 # 虚拟路由编号,主从要一至 priority 100 # 优先级,数值越大,获取处理请求的优先级越高 master要大于slave advert_int 1 ##主备之间通信检查的时间间隔,单位秒 unicast_src_ip 192.168.177.197 # 本机ip #检查脚本,与vrrp_script对应 track_script { chk_nginx } ##keepalived之间认证类型为密码 authentication { auth_type PASS # 指定认证方式。PASS简单密码认证(推荐),AH:IPSEC认证(不推荐) auth_pass 1111 # 指定认证所使用的密码。最多8位 } ##虚拟IP池 virtual_ipaddress { # 指定VIP地址、访问地址、虚拟ip随意定义 172.33.1.12/24 } } ----------------------------------------------------------------------------------------------- 8、编写脚本: ·vim /etc/keepalived/nginx_check.sh #脚本路径和名称要和上面keepalived.conf配置文件里的要一致 -------------------------------------------------------- #!/bin/bash #version 0.0.1 #当nginx进程不存在时,会自动重启nginx服务; A=`ps -C nginx --no-header |wc -l` if [ $A -eq 0 ];then docker restart nginx #重启nginx sleep 2 if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then systemctl stop keepalived fi fi ------------------------------------------------------------- 9、给脚本授权:chmod 777 nginx_check.sh 注:以上操作主备一致、需要修改的是keepalived.conf配置文件里的本机ip、state、priority即可
测式:
1、先使用虚拟ip(VIP)访问网页:192.168.177.15 或curl 192.168.177.15 #注意这里负载均衡nginx设置的端口为80
#如果虚拟机可以访问,而本地浏览器不能访问,检查一下本地与虚拟ip的通讯
2、测式停掉nginx、看脚本会不会自动重启nginx
3、测式停掉主机:keepalived.service服务、看备机上 ip a 网卡 'inet 192.168.177.15/24' 是否转移到备机、网页是否能继续访问
本文作者:little小新
本文链接:https://www.cnblogs.com/littlecc/p/17762083.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步