keepalive + nginx 搭建高可用集群動態網站


 

環境准備:

兩台節點部署keepalived,並且設為互為主從,實現高可用。

兩台從節點部署nginx以及相關組件,作為真實服務器實現動態網站上線。

 

一、MASTER(BACKUP)節點下載keepalived並且配置文件。

作為

1)  yum -y install keepalived

設置為v1的主節點,v2的從節點

虛擬ip為192.168.253.250

后端真實服務器ip為 192.168.253.146  和  192.168.253.188

[root@localhost ~]# cat /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_DEVEL
#   vrrp_skip_check_adv_addr
#   vrrp_strict
#   vrrp_garp_interval 0
#   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.253.250
    }
}
vrrp_instance VI_2 {
    state BACKUP
    interface ens33
    virtual_router_id 52
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 2222
    }   
    virtual_ipaddress {
        192.168.253.200
    }   
}   

virtual_server 192.168.253.250 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
    protocol TCP

    real_server 192.168.253.188 80 {
        weight 1
        HTTP_GET {
            url {
              path /
          state_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

virtual_server 192.168.253.250 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
    protocol TCP

    real_server 192.168.253.146 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              state_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
cat /etc/keepalived/keealived.conf

 

2)   重啟keepalived

[root@localhost ~]# systemctl restart keepalived

二、BACKUP(master)節點下載keepalived並且配置文件。

設置為v1的從節點,v2的主節點

虛擬ip為192.168.253.200

后端真實服務器ip也是 192.168.253.146  和  192.168.253.188

 

3)測試互為主備的兩個節點是否設置成功

一台節點執行:systemctl stop keepalived 停掉高可用服務

如果虛擬ip發生漂移說明設置成功。如下:

[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:33:f9:60 brd ff:ff:ff:ff:ff:ff
    inet 192.168.253.168/24 brd 192.168.253.255 scope global dynamic ens33
       valid_lft 1338sec preferred_lft 1338sec
    inet 192.168.253.250/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.253.200/32 scope global ens33
       valid_lft forever preferred_lft forever

 

三、在后端服務器上部署lnmp。

 

1)下載nginx及相關組件.

 yum install nginx php php-mysql php-fpm mariadb-server -y

 

2)編輯nginx配置文件,修改兩處

index index.php index.html;


 location ~ /.*\.php$ {
        fastcgi_pass 127.0.0.1:9000;
        include fastcgi.conf;
        }

然后重啟相關服務

systemctl restart nginx

systemctl restart php-fpm

 

3)重啟maridb並創建數據庫,用戶和密碼。

  systemctl restart mariadb

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> create database baba; ERROR 1007 (HY000): Can't create database 'baba'; database exists MariaDB [(none)]> grant all on *.* to ken@'localhost' identified by '1';

4)在/var/www/html上傳wordpress包。復制並根據數據庫修改庫名、用戶名密碼等。

[root@localhost ~]# cd /var/www/html/
[root@localhost html]# ls
index.php    wordpress-3.3.1-zh_CN.zip  wp-blog-header.php    wp-content         wp-load.php   wp-register.php   xmlrpc.php
license.txt  wp-activate.php            wp-comments-post.php  wp-cron.php        wp-login.php  wp-settings.php
readme.html  wp-admin                   wp-config.php         wp-includes        wp-mail.php   wp-signup.php
wordpress    wp-app.php                 wp-config-sample.php  wp-links-opml.php  wp-pass.php   wp-trackback.php

// ** MySQL 設置 - 具體信息來自您正在使用的主機 ** //
/** WordPress 數據庫的名稱 */
define('DB_NAME', 'baba');

/** MySQL 數據庫用戶名 */
define('DB_USER', 'baba');

/** MySQL 數據庫密碼 */
define('DB_PASSWORD', '1');

 

5)使用shell寫一個添加回環路由的腳本,並執行。

#!/bin/bash
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 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
        ifconfig ens33:0 192.168.253.250/32 broadcast 192.168.253.250 up
        if [ $? -eq 0 ];then
                route add -host 192.168.253.250 dev ens33:0
        fi
        echo "啟動成功"
;;
stop)
        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
        echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
        echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
        ifconfig ens33:0 down
        route del -host 192.168.253.250
        echo "刪除成功"
;;
*)
        echo "usage start|stop"
;;
esac
vim 1.sh

bash 1.sh start

 

6)主節點查看是否添加到后端集群中

[root@localhost ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.253.250:80 rr persistent 50
  -> 192.168.253.146:80           Route   1      0          0         
  -> 192.168.253.188:80           Route   1      0          0         

 

7)使用虛擬ip訪問動態網站。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM