设为首页 收藏本站
查看: 1125|回复: 0

[经验分享] nginx+keepalived 高可用主从配置

[复制链接]

尚未签到

发表于 2017-12-23 14:43:47 | 显示全部楼层 |阅读模式
  权重一、系统环境及软件版本
  CentOS 6.6 x64
  keepalived-1.2.18.tar.gz
  nginx-1.6.2.tar.gz
  主服务器:192.168.38.64
  从服务器:192.168.38.66
  VIP : 192.168.38.100
  二、nginx安装 (主从安装一致)
  1.安装依赖环境
  yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel
  2.上传nginx到  opt 目录
  3.解压安装
  # tar -zxvf nginx-1.6.2.tar.gz
  # cd nginx-1.6.2
  # ./configure --prefix=/opt/nginx    (prefix=/opt/nginx   这个指定的是 nginx目录)
  # make && make install
  4.修改 nginx监听端口 及 index.html
  # vi /opt/nginx/conf/nginx.conf
DSC0000.png

  vi /opt/nginx/html/index.html
DSC0001.png

  5. nginx 启动及常用命令
  配置测试:      /opt/nginx/sbin/nginx -t    出现如下界面说明配置没问题
DSC0002.png

  启动 :  /opt/nginx/sbin/nginx

  重启 :  /opt/nginx/sbin/nginx  -s>  停止  :  /opt/nginx/sbin/nginx -s stop
  6.开机启动 nginx
  vi /etc/rc.local
  加入:   /opt/nginx/sbin/nginx
  7.修改防火墙开放端口
  vi /etc/sysconfig/iptables
  添加 :  -A INPUT -p tcp -m state --state NEW -m tcp --dport  8888 -j ACCEPT
    重启防火墙   :    service iptables restart
  8.问题
  启动 nginx遇到的问题  
DSC0003.png

  vi /etc/ld.so.conf
  添加:   /opt/nginx/lib/
  9.nginx的负载均衡
  nginx的负载均衡主要是 由upstream 这一模块完成
  修改 nginx的配置文件
  vi /data/nginx/conf/nginx.conf
  添加如下内容:(web_pools 这个名称可变)
  upstream web_pools {   
  server 10.0.6.108:7080 weight=1;
  server 10.0.0.85:8980 weight=1;
  }
  将server节点下的location节点中的proxy_pass配置为:http:// + upstream名称即可
  结果如下:
DSC0004.png

  其中  weight是权重    backup是备用服务器 ,只有其它服务器宕机后,备用服务器才会启动。
  三、keepalived 安装
  1.keepalived上传到 opt目录下
  2.解压 安装  
  tar -zxvf keepalived-1.2.18.tar.gz
  cd keepalived-1.2.18
  ./configure --prefix=/opt/keepalived
  make && make install
  3.将 keepalived 安装成 linux服务
  cp /opt/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
  cp /opt/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
  ln -s /opt/sbin/keepalived /usr/sbin/
  ln -s /opt/keepalived/sbin/keepalived /sbin/
  4.设置 keepalived 服务开机启动
  chkconfig keepalived on
  5.修改 Keepalived 配置文件
  vi /etc/keepalived/keepalived.conf
  ! Configuration File for keepalived   (!、#都是注释)
  global_defs {  #全局配置
  notification_email {
  acassen@firewall.loc
  failover@firewall.loc
  sysadmin@firewall.loc
  }
  notification_email_from Alexandre.Cassen@firewall.loc
  smtp_server 192.168.200.1
  smtp_connect_timeout 30
  router_id LVS_01     #这个配置要唯一
  } 
  vrrp_script chk_nginx {
  script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径
  interval 2 ## 检测时间间隔
  weight -20 ## 如果条件成立,权重-20
  } 
  vrrp_instance VI_1 {   #实例  VI_1 名字可以随意  但是不建议修改
  state MASTER   # 主服务器 MASTER     从服务器 BACKUP
  interface em1     #  em1 网卡
  virtual_router_id 51    # virtual_router_id  主备要一致
  priority 100    # 优先级  数字越大 优先级越高    priority 的值 主服务器要大于 从服务器
  advert_int 1   #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
  authentication {   # 主从通信 验证类型及密码  
  auth_type PASS  #设置vrrp验证类型,主要有PASS和AH两种
  auth_pass 1111  #设置vrrp验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信
  } 
  ## 将 track_script 块加入 instance 配置块
  track_script {
  chk_nginx ## 执行 Nginx 监控的服务
  }
  virtual_ipaddress {
  192.168.38.100/24    #VRRP HA 虚拟地址 如果有多个VIP,继续换行填写
  }
  } 
  6.编写 Nginx 状态检测脚本
  vi /etc/keepalived/nginx_check.sh
  内容如下:
  #!/bin/bash
  A=`ps -C nginx –no-header |wc -l`
  if [ $A -eq 0 ];then
  /opt/nginx/sbin/nginx
  sleep 2
  if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
  killall keepalived
  fi
  fi
  保存后,给脚本赋执行权限:
  chmod +x /etc/keepalived/nginx_check.sh
  7.注意点: Keepalived主从配置文件不同点
  a.router_id  不一致
  b.state  主服务器是 MASTER ,从服务器是  BACKUP
  c.priority   主服务器 大于 从服务器
  8.keepalived 命令
  启动 : service keepalived start
  停止: service keepalived stop
  重启: service keepalived restart
  9.注意的问题
  a.vip没绑定成功
  解决方案:
  ip addr   查看  本地ip所在网卡的名称 ,然后修改 配置文件
DSC0005.png

  vi /etc/keepalived/keepalived.conf   
DSC0006.png

  保存后   service keepalived restart  重启  keepalived服务即可
  10.测试
  启动主从nginx和keepalived 服务
  主从服务器分别:    ip add | grep 192.168.38.100
  在 192.168.38.64 可看到
DSC0007.png

  同时 在 192.168.38.66
DSC0008.png

  当杀死 主服务器上的 keepalived 则 从服务器
DSC0009.png

  当再次启动 主服务器上的 keepalived则结果主服务器上有结果,从服务器上没结果。
  当杀死 nginx后,keepalived则会自动启动 nginx服务
  11. keepalived 脑裂 ( ip add | grep 192.168.38.100     在主从都有结果)
  解决方案:防火墙问题
  iptables -I INPUT 4 -p vrrp -j ACCEPT   
  service iptables save
  service iptables restart
DSC00010.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-427184-1-1.html 上篇帖子: 从入门到删除数据库 下篇帖子: nginx 监控脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表