用keepalived高可用nginx

单主模型

环境四个虚拟机

upstream server:node1:172.16.100.6         CeotOS 6

upstream server:node3:172.16.100.69         CeotOS 7

节点1:172.16.100.67                        CeotOS 7

节点2:node2:172.16.100.68                       CeotOS 7

节1&2

# yum install nginx -y

# cd /etc/nginx

# vim nginx.conf

                      include /etc/nginx/conf.d/*.conf;
                      upstream webservers {
                                           server 172.16.100.6:80 weight=1;
                                           server 172.16.100.69:80 weight=1;
                       }

                     location   /   {

                                           proxy_pass   http://websrvers/;

                     }

# nginx   -t  

# systemctl start nginx.service
# netstat -tnlp
用浏览器访问172.16.100.67
# scp nginx.conf node2:/etc/nginx/

节2
# systemctl start nginx.service
# netstat -tnlp

用浏览器访问172.16.100.68看能否负载均衡

  • 用keepalived监控nginx服务
节1&节2
# vim keepalived.conf 
     vrrp_script chk_nginx {
             script "killall -0 nginx &> /dev/null"
             interval 1 
             weight -10
       }
       vrrp_instance VI_1 {
             track_script {
                   chk_nginx
             }
       }
节1

# systemctl status nginx.service

# systemctl start keepalived.service ssh node2:systemctl start keepalived.service

# systemctl status keepalived.service

# ip addr list

如果没启动起来,可能是组播地址和虚拟地址的问题,修改一下即可

宕掉nginx,肯是否会转到节点2上

# systemctl stop nginx.service

# systemctl status nginx

节2

# ip addr list

节1

# systemctl start nginx.service

浏览器访问172.16.100.88

节1(主节点)只要在线,节2(备节点)就抢不走,除非节1宕掉
# vim notify

 #!/bin/bash

 #


 vip=172.16.100.88

 contact='root@localhost' 


 notify() {

 mailsubject="`hostname` to be $1: $vip floating"    

 mailbody="`date '+%F %H:%M:%S'`: vrrp transition, `hostname` changed to be $1"   

echo $mailbody | mail -s "$mailsubject" $contact

 }


 case "$1" in

           master)

              notify master
              systemctl restart nginx.service

              exit 0

           ;;

           backup)

               notify backup
               systemctl restart nginx.service

               exit 0

           ;;

           fault)

               notify fault

                exit 0

           ;;

           *)

               echo 'Usage: `basename $0` {master|backup|fault}'

               exit 1

            ;;

  esac

# scp notify.sh node2:/etc/keepalived/

# systemctl status keepalived

# ip addr list

主停掉,备也停掉,会自动启动nginx

# systemctl stop httpd.server

节2

# systemctl stop nginx.service

# systemctl status keepalived

节1

# systemctl status nginx.service

# systemctl status keepalived

用keepalived高可用nginx 用keepalived高可用nginx

双主模型

节1
# vim keepalived.conf
            vrrp_instance VI_2 {

                        state BACKUP
                        interface ens33

                        virtual_router_id 61

                        priority 99

                        advert_int 1

                        authentication {

                                 auth_type PASS
                                 auth_pass 1111
                       }

                       virtual_ipaddress {

                                172.16.100.180/16 dev ens33 label ens33:2

                       }
                       track_script {

                                      chk_nginx

                       }

                        notify_master “/etc/keepalived/notify.sh master”   (不手动启动nginx,而让监控系统确保nginx在线)

                        notify_backup “/etc/keepalived/notify.sh backup”

                        notify_fault “/etc/keepalived/notify.sh fault”

             }
节1&节2
(不手动启动nginx,而让监控系统确保nginx在线)
# vim notify.sh
   注释掉systemctl restart nginx.service
节2
# vim keepalived.conf
        vrrp_instance VI_2 {

                        state MASTER
                        interface ens33

                        virtual_router_id 61

                        priority 100

                        advert_int 1
                        authentication {

                                 auth_type PASS
                                 auth_pass 1111
                       }

                       virtual_ipaddress {

                                172.16.100.180/16 dev ens33 label ens33:2

                       }
                       track_script {

                                      chk_nginx
                       }

                       notify_master “/etc/keepalived/notify.sh master” 

                       notify_backup “/etc/keepalived/notify.sh backup”

                       notify_fault “/etc/keepalived/notify.sh fault”

         }
节1

# sytemctl restart keepalived.service; ssh node2'sytemctl restart keepalived.service'
# systemctl status keepalived
# ifconfig ens33:1 down
# sytemctl restart keepalived.service; ssh node2'sytemctl restart keepalived.service'
# systemctl status keepalived
用keepalived高可用nginx
节2
# systemctl status keepalived.service
# ip addr list
用浏览器访问两个地址,看调度是否有问题
节1

# sytemctl restart keepalived.service; sytemctl start httpd.service
# systemctl status keepalived

用keepalived高可用nginx
节2
# ifconfig
节1
# sytemctl stop httpd.service; sytemctl restart nginx.service'
# systemctl status nginx.service
# systemctl status keepalived
用keepalived高可用nginx
# ifconfig     




原创文章,作者:nene,如若转载,请注明出处:http://www.178linux.com/88155

(0)
nenenene
上一篇 2017-10-15 16:07
下一篇 2017-10-15 22:15

相关推荐

  • ☞LAMP

    LAMP lamp环境简介 php –> httpd Module形式安装php FastCGI方式安装php httpd-2.2配置fcgi php-xcache MySQL 安装与配置 php –> MySQL 快速部署LAMP php网站程序安装 phpMyadmin wordpress DiscuzX 脚本安装wordpress、disc…

    Linux干货 2016-10-12
  • 初识Linux—-小练习

    1、怎样更改命令提示符的颜色?     步骤一:通过 echo $PS1 命令显示当前提示符格式;     步骤二:通过cat /etc/DIR_COLORS 命令,查询需要颜色的编号;     步骤三:打开.bashrc文件,命令为nano  .bashrc,进入后添加,如图: &nbs…

    2017-02-18
  • Linux 系统启动流程与grub的应用

    一 Linux 系统启动流程    POST –> BIOS(Boot Sequence) –> MBR(bootloader) –> kernel + initramfs(或initrd) –> rootfs (ro) –> /sbin/init …

    Linux干货 2016-03-07
  • grep命令与正则表达式的应用示例、find命令应用示例

    grep命令与正则表达式的应用示例、find命令应用示例 显示当前系统上root、fedora或user1用户的默认shell。 使用扩展正则表达式,它支持使用A|B表示或者之意。查看用户的默认shell,cat /etc/passwd文件,根据用户名所处位置进行锚定,其最后一个字段即表示该用户的默认shell。实现方式及结果如下:   找出/et…

    Linux干货 2016-11-28
  • MongoDB-index

    索引:特殊的数据结构,存储表的数据的一小部分以实现快速查询 优点:     1、大大减少了服务器需要扫描的数据量     2、索引可以帮助服务器避免排序或使用临时表     3、索引可以将随机io转换为顺序io 索引评估:三星(非常好) 一…

    Linux干货 2016-11-27
  • samba服务实现:linux和windows之间共享

    1,首先在linux(centos6,7)安装好samba程序:     yum -y install samba   samba-common        主配置文件:/etc/samba/smb.conf   ~]# groupadd share_gro…

    2017-03-05