本文主要是介绍凝思6.0.80下基于nginx和keepalived的主备机服务切换方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、需求
现场两台服务器,均可做为网页服务器,网页登录地址分别为http://192.168.0.100:8080和http://192.168.0.101:8080。现要求正常时连接其中一台服务器,当连接的服务器出现异常或网络连接中断时,可以自动切换连接到另一台服务器,即实现服务器的主备服务切换功能。
2、分析
根据对上述需求的分析,可以得出一个服务切换的方案,具体方法是两台服务器均可生成一个共同IP地址,如:192.168.0.10,正常情况下只在一台服务器上生成,当正常服务器异常时,可在另一台服务器上生成。浏览器只需要登录http://192.168.0.10即可访问网页。
为了实现分析后方案,需要一个网页代理服务和一个主备机IP地址切换服务,也就是我们要用到的nignx和keepalived。
3、安装服务
在凝思6.0.80系统环境下,需要安装libnl、nginx、keepalived三个安装包。libnl是keepalived的依赖包,在凝思系统下安装不完全,需要补充安装。
两台服务器均需安装以下内容。
3.1 安装nignx
- 在http://nginx.org/en/download.html下载安装包nginx-1.19.7.tar.gz
- 拖入凝思
- 切换至root用户
- 解压 tar zxvf nginx-1.19.7.tar.gz
- ./configure
- make && make install
经过上述操作,nignx安装完毕。安装目标在 /usr/local/nignx中,在/etc/rc.local中添加/usr/local/nginx/sbin/nignx,完成启机自启动nginx功能
3.2 安装libnl
- 在http://www.linuxfromscratch.org/blfs/view/svn/basicnet/libnl.html下载libnl-3.5.0.tar.gz
- 拖入凝思
- 切换至root用户
- 解压 tar zxvf libnl-3.5.0.tar.gz
- ./configure
- make && make install
经过上述操作,libnl安装完毕,安装目标在/usr/local/lib中
在/etc/ld.so.conf中添加/usr/local/lib
3.3 安装keepalived
- 在https://www.keepalived.org/download.html下载keepalived-2.2.1.tar.gz
- 拖入凝思
- 切换至root用户
- 解压 keepalived-2.2.1.tar.gz
- 添加自启动功能 cp keepalived-2.2.1/keepalived/etc/init.d/keepalived /etc/init.d
- ln -s /lib/x86_64-linux-gnu/libnl-genl-3.so.200 /lib/x86_64-linux-gnu/libnl-genl-3.so
- ./configure --prefix=/usr/local/keepalived
- make && make install
经过上述操作,keepalived安装完毕,安装目标在/usr/local/keepalived中。
- mkdir -p /etc/keepalived
- cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived
使用/etc/init.d/keepalived start 启动,在测试中keepalived会有些问题,这里大家自己去解决下,当试题了。
4、配置
4.1 双机nignx配置
http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;#代理websocket必填内容map $http_upgrade $connection_upgrade {default upgrade;'' close;}upstream websocket {server localhost:8080;}server {listen 80;server_name 0.0.0.0;location / {proxy_pass http://192.168.1.16:8080;#代理websocket必填内容proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;}}
}
4.2 主机keepalived配置
vrrp_script chk_http_port {script "/opt/chk_nginx.sh"interval 2weight -5fall 2rise 1
}#第一个网址虚拟共享IP
vrrp_instance VI_1 {state MASTERinterface eth0mcast_src_ip 192.168.1.102virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.16}track_script {#检查nignx是否启动chk_http_port}
}#第二个网址虚拟共享IP
vrrp_instance VI_2 {state MASTERinterface eth1mcast_src_ip 172.22.0.22virtual_router_id 52priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.22.0.16}
}
4.3 备机keepalived配置
vrrp_script chk_http_port {script "/opt/chk_nginx.sh"interval 2weight -5fall 2rise 1
}#第一个网址虚拟共享IP
vrrp_instance VI_1 {state BACKUPinterface eth0mcast_src_ip 192.168.1.101virtual_router_id 51priority 99advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.16}track_script {#检查nignx是否启动chk_http_port}
}#第二个网址虚拟共享IP
vrrp_instance VI_2 {state BACKUPinterface eth1mcast_src_ip 172.22.0.21virtual_router_id 52priority 99advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.22.0.16}
}
主机和备机的keepalived区别之处大家自己去比对吧。
5、结束
双机正常启动服务后,可以用ip ad指令看到虚拟IP地址在主机上,如果主机关机或keepalived服务关闭,虚拟IP会在备机中出现,直到主机恢复正常后虚拟IP会切回主机。
这篇关于凝思6.0.80下基于nginx和keepalived的主备机服务切换方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!