nginx高可用实践

利用keepalived实现nginx调度器高可用;

    1.在两台主机IP地址分别为(172.16.0.152    172.16.0.151)上分别配置keepalived

        1.1同步时间,在一号服务器/etc/ntp.conf添加如下几行,以此服务器提供ntp服务(172.16.0.151)

restrict 172.16.0.0/16
server ntp.sjtu.edu.cn ibust
server 127.127.1.0 ibust

    使用另一台主机172.16.0.152使用ntpdate 172.16.0.151同步时间

        1.2在一号服务器安装keepalived,并配置文件/etc/keepalived/keepalived.conf

global_defs {
   notification_email {
        root@localhost     
}
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id drct1
}
vrrp_script check_httpd {
   script "killall -0 nginx && exit 0 || exit 1"
   interval 1
   weight -20
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass MTUwPBjd
    }
    virtual_ipaddress {
        172.16.0.200
    }
track_script {
                        check_httpd
    }
}

        1.3同样配置二号服务器的keepalived

global_defs {
   notification_email {
        root@localhost
}
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id drct2
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass MTUwPBjd
    }
    virtual_ipaddress {
        172.16.0.200
    }
}

        1.4上述操作,是让两台主机能够实现动态ip地址浮动,当主服务器和附属服务器都开启时,虚拟ip地址会在主服务器上配置,当主服务器优先级降低时,附属服务器会变成MASTER,虚拟ip地址会在跳转到另一个服务器上

主服务器
Jun 15 17:05:04 bogon Keepalived_vrrp[8524]: VRRP_Instance(VI_1) forcing a new MASTER election
Jun 15 17:05:04 bogon Keepalived_vrrp[8524]: VRRP_Instance(VI_1) forcing a new MASTER election
Jun 15 17:05:05 bogon Keepalived_vrrp[8524]: VRRP_Instance(VI_1) Transition to MASTER STATE
Jun 15 17:05:06 bogon Keepalived_vrrp[8524]: VRRP_Instance(VI_1) Entering MASTER STATE
Jun 15 17:05:06 bogon Keepalived_vrrp[8524]: VRRP_Instance(VI_1) setting protocol VIPs.
Jun 15 17:05:06 bogon Keepalived_vrrp[8524]: VRRP_Instance(VI_1) Sending gratuitous ARPs on ens33 for 172.16.0.200
Jun 15 17:05:06 bogon Keepalived_healthcheckers[8523]: Netlink reflector reports IP 172.16.0.200 added
Jun 15 17:05:11 bogon Keepalived_vrrp[8524]: VRRP_Instance(VI_1) Sending gratuitous ARPs on ens33 for 172.16.0.200

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:62:eb:24 brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.151/16 brd 172.16.255.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 172.16.0.200/32 scope global ens33
       valid_lft forever preferred_lft forever
附属服务器       
Jun 15 16:45:10 bogon Keepalived_vrrp[8991]: VRRP_Instance(VI_1) Sending gratuitous ARPs on ens33 for 172.16.0.200
Jun 15 16:45:10 bogon Keepalived_healthcheckers[8990]: Netlink reflector reports IP 172.16.0.200 added
Jun 15 16:45:15 bogon Keepalived_vrrp[8991]: VRRP_Instance(VI_1) Sending gratuitous ARPs on ens33 for 172.16.0.200
Jun 15 16:56:12 bogon Keepalived_vrrp[8991]: Netlink reflector reports IP 192.168.1.117 added
Jun 15 16:56:12 bogon Keepalived_healthcheckers[8990]: Netlink reflector reports IP 192.168.1.117 added
Jun 15 17:05:04 bogon Keepalived_vrrp[8991]: VRRP_Instance(VI_1) Received higher prio advert
Jun 15 17:05:04 bogon Keepalived_vrrp[8991]: VRRP_Instance(VI_1) Entering BACKUP STATE
Jun 15 17:05:04 bogon Keepalived_vrrp[8991]: VRRP_Instance(VI_1) removing protocol VIPs.
Jun 15 17:05:04 bogon Keepalived_healthcheckers[8990]: Netlink reflector reports IP 172.16.0.200 removed

6: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:0f:b3:9b brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.152/16 brd 172.16.255.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::857b:a8be:2221:44af/64 scope link 
       valid_lft forever preferred_lft forever
当down掉主服务器的nginx时,主服务器优先级会降低,此时附属服务器
Jun 15 17:05:04 bogon Keepalived_healthcheckers[8990]: Netlink reflector reports IP 172.16.0.200 removed
Jun 15 17:07:56 bogon Keepalived_vrrp[8991]: VRRP_Instance(VI_1) forcing a new MASTER election
Jun 15 17:07:56 bogon Keepalived_vrrp[8991]: VRRP_Instance(VI_1) forcing a new MASTER election
Jun 15 17:07:57 bogon Keepalived_vrrp[8991]: VRRP_Instance(VI_1) Transition to MASTER STATE
Jun 15 17:07:58 bogon Keepalived_vrrp[8991]: VRRP_Instance(VI_1) Entering MASTER STATE
Jun 15 17:07:58 bogon Keepalived_vrrp[8991]: VRRP_Instance(VI_1) setting protocol VIPs.
Jun 15 17:07:58 bogon Keepalived_vrrp[8991]: VRRP_Instance(VI_1) Sending gratuitous ARPs on ens33 for 172.16.0.200
Jun 15 17:07:59 bogon Keepalived_healthcheckers[8990]: Netlink reflector reports IP 172.16.0.200 added


6: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:0f:b3:9b brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.152/16 brd 172.16.255.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 172.16.0.200/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::857b:a8be:2221:44af/64 scope link 
       valid_lft forever preferred_lft forever

   2.构建LNAMMP架构:
            1) Nginx既是前端调度器,又是反向代理缓存服务器;在①的基础上,在每个服务器上安装nginx并编辑/etc/nginx/nginx.conf,俩台服务器配置一样

    upstream kiyomi {    写在http上下文中,用于定义后端服务器组
        server 172.16.0.154:80 weight=1;
        server 172.16.0.155:80 weight=1;
}
           location / {   写在server上下文中,用于实现报文转发
                proxy_pass http://kiyomi;
        }


            2) 将php的session缓存于memcached中;在缓存服务器172.16.0.150上安装memcached ,后端真实服务器172.16.0.154,    172.1.6.0.155上分别安装php-fpm,php-pecl-memcache

然后在后面真实服务器上分别部署LAMP,并修改/etc/php-fpm.d/www.conf,添加

php_value[session.save_handler] = memcache
php_value[session.save_path] = "tcp://172.16.0.150:11211?persistent=1&weight=1&timeout=1&retry_interval=15"

           分别在两台服务器上做session测试   

图片.png图片.png

             3) 使用php-fpm上部署Discuz论坛程序;

将discuz放到各后端服务器的上即可,因为是nginx是做代理转发的,因此不需要持久连接

图片.png



猜你喜欢

转载自blog.51cto.com/wangchaode/2129965