環境準備:php
兩臺節點部署keepalived,而且設爲互爲主從,實現高可用。html
兩臺從節點部署nginx以及相關組件,做爲真實服務器實現動態網站上線。mysql
1、MASTER(BACKUP)節點下載keepalived而且配置文件。nginx
做爲sql
1) yum -y install keepalivedshell
設置爲v1的主節點,v2的從節點數據庫
虛擬ip爲192.168.253.250vim
後端真實服務器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 } } }
2) 重啓keepalivedbash
[root@localhost ~]# systemctl restart keepalived
2、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
3、在後端服務器上部署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
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訪問動態網站。