加入收藏 | 设为首页 | 会员中心 | 我要投稿 好传媒网 (https://www.haochuanmei.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

Keepalived+Lvs+Nginx搭建Nginx高可用集群

发布时间:2019-10-12 17:22:47 所属栏目:外闻 来源:今日头条
导读:nginx是一款非常优秀的反向代理工具,支持请求分发,负载均衡,以及缓存等等非常实用的功能。在请求处理上,nginx采用的是epoll模型,这是一种基于事件监听的模型,因而其具备非常高效的请求处理效率,单机并发能力能够达到上百万。nginx接收到的请求可以

在172.16.28.130 和172.16.28.131 上安装ipvs和keepalived:

  1. # 安装ipvs 
  2. sudo yum install ipvsadm 
  3. # 安装keepalived 
  4. sudo yum install keepalived 

在172.16.28.132 和172.16.28.133 上安装nginx:

  1. # 安装nginx 
  2. sudo yum install nginx 

需要注意的是,在两台nginx服务器上需要将防火墙关闭,否则lvs+keepalived的两台机器就无法将请求发送到两台nginx服务器上来:

  1. # 关闭防火墙 
  2. systemctl disable firewalld.service 

查看两台负载均衡机器是否支持lvs:

  1. sudo lsmod |grep ip_vs 
  2. # 如果看到如下结果,则说明是支持的 
  3. [zhangxufeng@localhost ~]$ sudo lsmod|grep ip_vs 
  4. ip_vs 145497 0 
  5. nf_conntrack 137239 1 ip_vs 
  6. libcrc32c 12644 3 xfs,ip_vs,nf_conntrack 

如果上述命令没有任何结果,则执行sudo ipvsadm 命令启动ipvs之后,再通过上述命令进行查看即可。启动ipvs之后,我们就可以在/etc/keepalived/ 目录下编辑keepalived.conf 文件,我们以172.16.28.130 机器作为master机器,master节点配置如下:

  1. # Global Configuration 
  2. global_defs { 
  3.  lvs_id director1 # 指定lvs的id 
  4. # VRRP Configuration 
  5. vrrp_instance LVS { 
  6.  state MASTER   # 指定当前节点为master节点 
  7.  interface ens33    # 这里的ens33是网卡的名称,通过ifconfig或者ip addr可以查看 
  8.  virtual_router_id 51   # 这里指定的是虚拟路由id,master节点和backup节点需要指定一样的 
  9.  priority 151   # 指定了当前节点的优先级,数值越大优先级越高,master节点要高于backup节点 
  10.  advert_int 1   # 指定发送VRRP通告的间隔,单位是秒 
  11.  authentication { 
  12.  auth_type PASS # 鉴权,默认通过 
  13.  auth_pass 123456   # 鉴权访问密码 
  14.  } 
  15.  virtual_ipaddress { 
  16.  172.16.28.120  # 指定了虚拟ip 
  17.  } 
  18. # Virtual Server Configuration - for www server 
  19. # 后台真实主机的配置 
  20. virtual_server 172.16.28.120 80 { 
  21.  delay_loop 1   # 健康检查的时间间隔 
  22.  lb_algo rr # 负载均衡策略,这里是轮询 
  23.  lb_kind DR # 调度器类型,这里是DR 
  24.  persistence_time 1 # 指定了持续将请求打到同一台真实主机的时间长度 
  25.  protocol TCP   # 指定了访问后台真实主机的协议类型 
  26.  # Real Server 1 configuration 
  27.  # 指定了真实主机1的ip和端口 
  28.  real_server 172.16.28.132 80 { 
  29.  weight 1   # 指定了当前主机的权重 
  30.  TCP_CHECK { 
  31.  connection_timeout 10  # 指定了进行心跳检查的超时时间 
  32.  nb_get_retry 3 # 指定了心跳超时之后的重复次数 
  33.  delay_before_retry 3   # 指定了在尝试之前延迟多长时间 
  34.  } 
  35.  } 
  36.  # Real Server 2 Configuration 
  37.  real_server 172.16.28.133 80 { 
  38.  weight 1   # 指定了当前主机的权重 
  39.  TCP_CHECK { 
  40.  connection_timeout 10  # 指定了进行心跳检查的超时时间 
  41.  nb_get_retry 3 # 指定了心跳超时之后的重复次数 
  42.  delay_before_retry 3   # 指定了在尝试之前延迟多长时间 
  43.  } 
  44.  } 

上面是master节点上keepalived的配置,对于backup节点,其配置与master几乎是一致的,只是其state和priority参数不同。如下是backup节点的完整配置:

  1. # Global Configuration 
  2. global_defs { 
  3.  lvs_id director2 # 指定lvs的id 
  4. # VRRP Configuration 
  5. vrrp_instance LVS { 
  6.  state BACKUP   # 指定当前节点为master节点 
  7.  interface ens33    # 这里的ens33是网卡的名称,通过ifconfig或者ip addr可以查看 
  8.  virtual_router_id 51   # 这里指定的是虚拟路由id,master节点和backup节点需要指定一样的 
  9.  priority 150   # 指定了当前节点的优先级,数值越大优先级越高,master节点要高于backup节点 
  10.  advert_int 1   # 指定发送VRRP通告的间隔,单位是秒 
  11.  authentication { 
  12.  auth_type PASS # 鉴权,默认通过 
  13.  auth_pass 123456   # 鉴权访问密码 
  14.  } 
  15.  virtual_ipaddress { 
  16.  172.16.28.120  # 指定了虚拟ip 
  17.  } 
  18. # Virtual Server Configuration - for www server 
  19. # 后台真实主机的配置 
  20. virtual_server 172.16.28.120 80 { 
  21.  delay_loop 1   # 健康检查的时间间隔 
  22.  lb_algo rr # 负载均衡策略,这里是轮询 
  23.  lb_kind DR # 调度器类型,这里是DR 
  24.  persistence_time 1 # 指定了持续将请求打到同一台真实主机的时间长度 
  25.  protocol TCP   # 指定了访问后台真实主机的协议类型 
  26.  # Real Server 1 configuration 
  27.  # 指定了真实主机1的ip和端口 
  28.  real_server 172.16.28.132 80 { 
  29.  weight 1   # 指定了当前主机的权重 
  30.  TCP_CHECK { 
  31.  connection_timeout 10  # 指定了进行心跳检查的超时时间 
  32.  nb_get_retry 3 # 指定了心跳超时之后的重复次数 
  33.  delay_before_retry 3   # 指定了在尝试之前延迟多长时间 
  34.  } 
  35.  } 
  36.  # Real Server 2 Configuration 
  37.  real_server 172.16.28.133 80 { 
  38.  weight 1   # 指定了当前主机的权重 
  39.  TCP_CHECK { 
  40.  connection_timeout 10  # 指定了进行心跳检查的超时时间 
  41.  nb_get_retry 3 # 指定了心跳超时之后的重复次数 
  42.  delay_before_retry 3   # 指定了在尝试之前延迟多长时间 
  43.  } 
  44.  } 

将master和backup配置成完全一样的原因是,在master宕机时,可以根据backup的配置进行服务的无缝切换。

(编辑:好传媒网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读