keepalived+nginx高可用怎么实现(dockernginx高可用)

keepalived+nginx高可用怎么实现(dockernginx高可用)

浏览次数:
信息来源: 用户投稿
更新日期: 2025-10-26
文章简介

1.keepalived介绍keepalived最初是专为lvs负载均衡软件设计的,用来管理并监控lvs集群系统中各个服务节点的状态,后来又加入了实现高可用的vrrp功能。keepalived除

2025阿里云双十一服务器活动

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】是认证的密码

  • keepalived+nginx高可用怎么实现,dockernginx高可用

    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高可用怎么实现的详细内容,更多请关注主机测评网其它相关文章!

    标签:
  • 什么是WordPress主题(wordpresswoocommerce主题)
    « 上一篇
    返回列表
    下一篇 »

    如本文对您有帮助,就请抽根烟吧!