1.keepalived介绍
keepalived最初是专为lvs负载均衡软件设计的,用来管理并监控lvs集群系统中各个服务节点的状态,后来又加入了实现高可用的vrrp功能。keepalived除了能够管理lvs软件外,还能支持其他服务的高可用解决方案。
keepalived通过vrrp协议实现高可用功能的。vrrp(virtualrouterredundancyprotocol)虚拟路由冗余协议。vrrp出现的目的就是为了解决静态路由单点故障问题,它能保证当个别节点宕机时,整个网络可以不间断地运行。
2.keepalived高可用故障转移原理
keepalived高可用服务之间的故障转移,是通过vrrp来实现的。在keepalived服务工作时,主master节点会不断地向备节点发送(多播的方式)心跳消息,用来告诉备backup节点自己还活着。
当主节点发生故障时,无法给备节点发送心跳消息,如果备节点无法继续检测到来自主节点的心跳。就会调用自身的接管程序,接管主节点的ip资源和服务。当主节点恢复时,备节点又会释放主节点故障时自身接管的ip资源和服务,恢复到原来的备用角色
3.安装nginx
3.1.主节点(192.168.80.22)
3.1.1.安装编译工具和库文件
yum-yinstallmakezlibzlib-develgcc-c++libtoolopensslopenssl-devel
3.1.2.安装pcre
cd/usr/local/develop/anginx
https://www.fruan.com/post/configure
pcre-config--version
3.1.3.安装nginx
cd/usr/local/develop/anginx
tar-zxvfnginx-1.8.1.tar.gz
https://www.fruan.com/post/configure--prefix=/usr/local/develop/anginx/webserver/nginx--with-http_stub_status_module--with-http_ssl_module--with-pcre=/usr/local/develop/anginx/pcre-8.38
/usr/local/develop/anginx/webserver/nginx/sbin/nginx-v
--------------------------------------------------------
[root@hadoop02webserver]#/usr/local/develop/anginx/webserver/nginx/sbin/nginx-v
/usr/local/develop/anginx/webserver/nginx/sbin/nginx-t
/usr/local/develop/anginx/webserver/nginx/sbin/nginx#启动nginx
/usr/local/develop/anginx/webserver/nginx/sbin/nginx-sstop#停止nginx
/usr/local/develop/anginx/webserver/nginx/sbin/nginx-sreload#重新载入配置文件
/usr/local/develop/anginx/webserver/nginx/sbin/nginx-sreopen#重启nginx
3.1.4.nginx基础配置
#error_loglogs/error.log;
#error_loglogs/error.lognotice;
#error_loglogs/error.loginfo;
default_typeapplication/octet-stream;
log_formatmain'$remote_addr-$remote_user[$time_local]"$request"'
'$status$body_bytes_sent"$http_referer"'
'"$http_user_agent""$http_x_forwarded_for"';
access_loglogs/access.logmain;
#添加tomcat列表,真实应用服务器都放在这
#servertomcat地址:端口号weight表示权值,权值越大,被分配的几率越大;
server192.168.80.22:8080weight=4max_fails=2fail_timeout=30s;
server192.168.80.22:8081weight=4max_fails=2fail_timeout=30s;
#access_loglogs/host.access.logmain;
#indexindex.htmlindex.htm;
proxy_passhttp://tomcat_pool;#转向tomcat处理
proxy_set_headerhost$host;
proxy_set_headerx-real-ip$remote_addr;
proxy_set_headerx-forwarded-for$proxy_add_x_forwarded_for;
#redirectservererrorpagestothestaticpage/50x.html
error_page500502503504/50x.html;
}
3.2.备节点(192.168.80.21)
说明:安装方式同nginx主节点。
4.安装keepalived
4.1.主节点(192.168.80.22)
/etc/init.d/keepalivedstart
-------------------------------------------
[root@hadoop02anginx]#/etc/init.d/keepalivedstart
正在启动keepalived:[确定]
[root@hadoop02anginx]#ps-ef|grepkeepalived
root157231000:59?00:00:00/usr/sbin/keepalived-d
root1572415723000:59?00:00:00/usr/sbin/keepalived-d
root1572515723000:59?00:00:00/usr/sbin/keepalived-d
root1573115622000:59pts/100:00:00grepkeepalived
echo"/etc/init.d/keepalivedstart">>/etc/rc.local
/etc/init.d/keepalivedstop
vi/etc/keepalived/keepalived.conf
-----------------------------------------------------------
!configurationfileforkeepalived
notification_email_fromalexandre.cassen@firewall.loc
192.168.80.100deveth1labeleth1:1
...........................................................
关于配置说明:
【router_id】是路由标识,在一个局域网里面应该是唯一的
【vrrp_instancevi_1】{...}这是一个vrrp实例,里面定义了keepalived的主备状态、接口、优先级、认证和ip信息
【state】定义了vrrp的角色
【interface】定义使用的接口,这里我的服务器用的网卡都是eth1
【virtual_router_id】是虚拟路由id标识,一组的keepalived配置中主备都是设置一致
【priority】是优先级,数字越大,优先级越大,
【auth_pass】是认证的密码

4.2.备节点(192.168.80.21)
/etc/init.d/keepalivedstart
-------------------------------------------
[root@hadoop02anginx]#/etc/init.d/keepalivedstart
正在启动keepalived:[确定]
[root@hadoop02anginx]#ps-ef|grepkeepalived
root157231000:59?00:00:00/usr/sbin/keepalived-d
root1572415723000:59?00:00:00/usr/sbin/keepalived-d
root1572515723000:59?00:00:00/usr/sbin/keepalived-d
root1573115622000:59pts/100:00:00grepkeepalived
echo"/etc/init.d/keepalivedstart">>/etc/rc.local
/etc/init.d/keepalivedstop
vi/etc/keepalived/keepalived.conf
-----------------------------------------------------------------
!configurationfileforkeepalived
notification_email_fromalexandre.cassen@firewall.loc
192.168.80.100deveth1labeleth1:1
.............................................................
5.测试
5.1.启动主备节点的keepalived服务
#在节点一执行(192.168.80.22)
/etc/init.d/keepalivedstart
-------------------------------------
[root@hadoop02anginx]#ps-ef|grepkeepalived
root157881001:09?00:00:00/usr/sbin/keepalived-d
root1579015788001:09?00:00:00/usr/sbin/keepalived-d
root1579115788001:09?00:00:00/usr/sbin/keepalived-d
root1580715622001:33pts/100:00:00grepkeepalived
#在节点二执行(192.168.80.21)
/etc/init.d/keepalivedstart
---------------------------------------
[root@hadoop01~]#ps-ef|grepkeepalived
root115421001:30?00:00:00/usr/sbin/keepalived-d
root1154411542001:30?00:00:00/usr/sbin/keepalived-d
root1154511542001:30?00:00:00/usr/sbin/keepalived-d
root1155011512001:33pts/100:00:00grepkeepalived
[root@hadoop01~]在节点一执行(192.168.80.22)
/etc/init.d/keepalivedstop
-------------------------------------------
1:lo:<loopback,up,lower_up>mtu65536qdiscnoqueuestateunknown
link/loopback00:00:00:00:00:00brd00:00:00:00:00:00
inet127.0.0.1/8scopehostlo
valid_lftforeverpreferred_lftforever
2:eth1:<broadcast,multicast,up,lower_up>mtu1500qdiscpfifo_faststateupqlen1000
link/ether00:50:56:38:e5:46brdff:ff:ff:ff:ff:ff
inet192.168.80.21/24brd192.168.80.255scopeglobaleth1
inet192.168.80.100/32scopeglobaleth1:1
inet6fe80::250:56ff:fe38:e546/64scopelink
valid_lftforeverpreferred_lftforever
[root@hadoop01~]#
5.4.继续通过虚ip访问服务
6.keepalived+nginx整合
说明:编写nginx守护脚本,如果nginx服务出现故障,则停止当前节点的keepalived服务。自动切换到备用节点。
6.1.编写nginx守护脚本
--------------------------------------
if[$(netstat-tlnp|grepnginx|wc-l)-ne1]
/etc/init.d/keepalivedstop
nohup/usr/local/develop/anginx/shell/nginx_check.sh&
6.2.停止主节点nginx服务
/usr/local/develop/anginx/webserver/nginx/sbin/nginx-sstop
[root@hadoop02~]#ps-ef|grepnginx
root159151001:51?00:00:00/bin/bash/usr/local/develop/anginx/shell/nginx_check.sh
root1651615753001:54pts/500:00:00grepnginx
#观察备用节点变化【服务正常】
--------------------------------------
[root@hadoop01shell]#ipaddr
1:lo:<loopback,up,lower_up>mtu65536qdiscnoqueuestateunknown
link/loopback00:00:00:00:00:00brd00:00:00:00:00:00
inet127.0.0.1/8scopehostlo
valid_lftforeverpreferred_lftforever
2:eth1:<broadcast,multicast,up,lower_up>mtu1500qdiscpfifo_faststateupqlen1000
link/ether00:50:56:38:e5:46brdff:ff:ff:ff:ff:ff
inet192.168.80.21/24brd192.168.80.255scopeglobaleth1
inet192.168.80.100/32scopeglobaleth1:1
inet6fe80::250:56ff:fe38:e546/64scopelink
valid_lftforeverpreferred_lftforever
#再次重新启动主节点nginx和keepalived服务
/usr/local/develop/anginx/webserver/nginx/sbin/nginx
/etc/init.d/keepalivedstart
以上就是keepalived+nginx高可用怎么实现的详细内容,更多请关注主机测评网其它相关文章!
本文来源:国外服务器--keepalived+nginx高可用怎么实现(dockernginx高可用)
本文地址:https://www.idcbaba.com/guowai/2592.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



