高可用Nginx

高可用Nginx

基于vrrp流动一个IP地址

  1. 各节点时间必须同步;
  2. 确保iptables以及selinux不会成为阻碍;
  3. 各节点之间可通过主机名互相同喜(对KA而言并非必须)
  4. 确保各节点的用于集群服务的接口支持MULTICAST通信

    IPv4,D类地址224-239

环境:

node1:172.16.253.223  li1.jing.io node1
node2:172.16.253.224  li2.jing.io node2

1、同步时间nginx实现代理服务器功能

ntpdate 172.16.0.1
vim /etc/chrony.conf
    server 172.16.0.1
systemctl restart chronyd.service
systemctl enable chronyd.service

2、停止firewalld或者添加规则放行多播信息

yum insstall  iptables-services

3、编辑hosts文件

172.16.253.223  li1.jing.io node1
172.16.253.224  li2.jing.io node2

4、物理网卡确保出现MULITCAST(支持多播功能)

ip link set multicast on dev eno16777736    #开启,off为关闭
#ifconfig可以查看

5、安装keepalived

yum install keepalived -y

6、单主配置:

##hosts文件:
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.253.223 li1.jing.io node1
172.16.253.224 li2,jing,io node2
##keepalived配置文件:(这个是node2,也就是备用节点的配置,到主节点需要更改为master和优先级,其他相关参数也需要更改,再次不做赘述)
! Configuration File for keepalived

global_defs {
   notification_email {
        root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id node2
   vrrp_mcast_group4 224.1.104.44
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 96
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass lijing
    }
    virtual_ipaddress {
        172.16.253.222/16 dev ens33 label ens33:0
    }
}
scp ./keepalived.conf 172.16.253.224:/etc/keepalived/
#接下来是启动keepalived,可以先启动备用节点,再查看网卡信息配置,再去启动主节点,查看网卡信息做出对比和结论

双主:

配置两个VIP,借助DNS实现一部分人去访问VIP1,一部分人去访问VIP2

##node1的文件配置
    vrrp_instance VI_1 {
        state MASTER
        interface ens33
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass lijing
        }
        virtual_ipaddress {
            172.16.253.222/16 dev ens33
        }
    }
    vrrp_instance VI_2 {
        state BACKUP
        interface ens33
        virtual_router_id 52
        priority 96
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass jingli
        }
        virtual_ipaddress {
            172.16.253.221/16 dev ens33
        }
    }

    ##node2文件配置:
    vrrp_instance VI_1 {
        statea BACKUP
        interface ens33
        virtual_router_id 51
        priority 96
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass lijing
        }
        virtual_ipaddress {
            172.16.253.222/16 dev ens33
        }
    }
    vrrp_instance VI_2 {
        state MASTER
        interface ens33
        virtual_router_id 52
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass jingli
        }
        virtual_ipaddress {
            172.16.253.221/16 dev ens33
        }
    }

构建DR类型的集群

基于keepalived做成高可用集群(两个及以上的Director)

##两个Director
    172.16.253.223          #A
                224         #B
##两个RS
    172.16.253.225          #R1
                226         #R2
##DR类型都桥接即可
#RS装上httpd
#Director安装Nginx
#同步时间
#RS1,2编辑主页信息
    vim /var/www/html/index.html
    #给出明显信息即可
#启动服务
#RS配置内核参数和IP地址:
vim setre.sh
    #!/bin/bash
    #
    vip='172.16.0.99'
    netmask='255.255.255.255'
    iface='lo:0'

    case $1 in
    start)
        echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
        echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
        echo 1 > /proc/sys/net/ipv4/conf/all/arp_announce
        ifconfig $iface $vip netmask $netmask broadcast $vip up
        route add -host $vip dev $iface
        ;;
    stop)
        ifconfig $iface down
        echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
        echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
        echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
        ;;
    *)
        exit
    esac
bash -n 
bash -x setrs.sh start
scp setrs.sh 172.16.253.226:/root
bash -x setrs.sh start
ip a        #查看
##Director上生成规则,用keepalived生成
yum -y install ipvsadm      #查看规则
vim keepalived.conf         #编辑keepalived配置文件,其他配置参照之前的主主或者主备都可以,建议使用主备,实验更加直观
        ##在vrrp的实例之外定义虚拟服务器
        ##man文档查看帮助 man keepalived.conf  virtual server相关帮助,注意只支持tcp
    virtual_server 172.16.253.223 80 {          #Director的VIP地址,两台Director上都要布置
        delay_loop 1
        lb_algo wrr
        lb_kind DR          #集群是DR类型
        protocol TCP
        sorry_server 127.0.0.1 80       #需要配置sorry_server

        real_server 172.16.253.225 {        #是RS1
            weight 1            #指明权重
            HTTP_GET {          #指明健康状态检测方式
                url {           #url可以指明多次
                    path /index.html        #根据这个页面做健康状态检测
                    status_code 200         #状态码响应为200,才为成功;校验码生成:curl -s http://172.16.253.225 | md5sum,这样可以更加苛刻
                }
                nb_get_retry                #尝试几次
                delay_before_retry 2        #每次尝试延迟多长时间
                connect_timeout             #连接超时时长,默认5s,可以不写
            }
        }

            real_server 172.16.253.226 {            #第二个RS
                weight 1            
                HTTP_GET {          
                    url {           
                        path /index.html    
                        status_code 200     
                    }
                    nb_get_retry    
                    delay_before_retry 2    
                    connect_timeout         
                }
            }
        }

配置sorry server:
不能只有一台,两台Director都需要配置

yum -y install nginx
systemctl start nginx.service       #只要默认主页启动,就认为是sorry

nginx实现代理服务器功能

原创文章,作者:半斤八两,如若转载,请注明出处:http://www.178linux.com/78715

(0)
半斤八两半斤八两
上一篇 2017-06-28
下一篇 2017-06-28

相关推荐

  • 编写服务脚本/root/bin/testsrv.sh和备份脚本/root/bin/copycmd.sh

    编写服务脚本/root/bin/testsrv.sh,完成如下要求 (1) 脚本可接受参数:start, stop, restart, status (2) 如果参数非此四者之一,提示使用格式后报错退出 (3) 如是start:则创建/var/lock/subsys/SCRIPT_NAME, 并显示“启动成功” 考虑:如果事先已经启动过一次,该如何处理? (…

    Linux干货 2016-08-24
  • 推荐-Linux Namespace的一点理解

        下文的原文来自: http://blog.csdn.net/preterhuman_peak/article/details/40857117    原文写的非常好,下文中大部分文字描述来自原文,我仅做了一点理解性的插图和实验部分。    &…

    Linux干货 2016-03-28
  • class16高级磁盘管理(二)网络管理(一)

    一、高级磁盘管理(二) 逻辑卷管理器快照 快照是特殊的逻辑卷 快照只有在它们和原来的逻辑卷不同时才会消耗空间。 当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中。 建立快照的卷大小只需要原始逻辑卷的15%~20%就够了。也可以使用lvextend 放大快照。 使用LVM 快照 为现有逻辑卷创建快照 #lvcreate -L …

    Linux干货 2016-09-05
  • 编译安装MariaDB源码包

        因为MySQL的发展趋势不甚乐观,MariaDB已替代MySQL被CentOS 7做为默认组件,如果想在CentOS 6中使用最新的MariaDB,则需要我们手动安装,其安装方式有三种:     1、RPM包安装     2、二进制…

    Linux干货 2015-06-08
  • 2017全球运维技术大会第二届12大技术专场等你来!

    去年9月,InfoQ在北京主办了第二届CNUTCon全球容器技术大会,大会邀请了来自Netflix、CoreOS、Docker公司、Mesosphere、阿里巴巴、腾讯、百度、京东、携程、搜狗等公司的技术负责人,共同探讨容器相关的应用场景、技术方案以及架构演进,得到了社区的一致好评。 到今年,CNUTCon已经是第三年了,前两年我们的方向是容器,随着技术的发…

    2017-06-20
  • 06文本工具简单介绍

    在Linux系统中,一个核心理念就是:一切皆文件。正确的对系统中文本的编辑配置与管理是Linux系统得以稳定运行的一个重要大前提。 因此Linux系统中的文件与管理特别重要,下面简单说一下在对文件处理过程中经常用到的一些命令工具。 文本查看命令:cat,tac,rev,more,less cat [option]…[file]… -E…

    Linux干货 2016-10-31