linux覆盤:老款終極蛇皮怪之lnmp+tomcat+jdk+keepalived+lvs+zabbix+nfs

嗯這是篇有故事的博文回想起來歷歷在目php

這次項目參與人數共計五人我榮幸擔任組長項目順利完成真心感謝你們html

先分享一下九臺機器項目構架圖(後期有修改):mysql

簡單說明一下其中問題:linux

負載均衡keepalived配置文件第一次出現nginx配置錯誤(屬於組員未理解配置需求)致使心跳測試失敗nginx

兩臺web服務器配置php編譯時建議安裝而不啓動mysql緣由配置時就心明眼亮啦web

mysql單獨服務器來跑,在配置完成後如何鏈接到nginx上,固然是在配置zrlog等網站配置時直接使用ip地址(數據庫地址)就能夠了算法

nfs這裏問題就大了,nfs提供的是共享存儲因此兩臺web上的數據能夠直接從這裏分享過去,就意味着不須要每臺機器上重複安裝,而是將須要的目錄共享便可sql

準備工做:數據庫

主機名 ip地址 角色
xm01 192.168.14.137 Master LVS + Keepalived
xm02 192.168.14.138 Slave LVS + Keepalived
vip 192.168.14.14 vip
xm03 192.168.14.139 Nginx server1+tomcat+jdk
xm04 192.168.14.140 Nginx server2+tomcat+jdk
xm05 192.168.14.141 zabbix
xm06 192.168.14.143 mysql master
xm07 192.168.14.144 mysql slave
xm08 192.168.14.145 NFS共享存儲服務器
xm09 192.168.14.146 NFS熱備服務器

開幹,首先關閉全部的firewalld(centos7)和selinux(iptables)vim

# systemctl stop firewalld

# systemctl disable firewalld

# iptables -F

# setenforce 0 #臨時關閉

# vi /etc/selinux/config selinux=disabled reboot #永久關閉

xm01(Master LVS + Keepalived)192.168.14.137

[root@zhdy-01 ~]# yum install -y keepalived

[root@zhdy-01 ~]# vim /etc/keepalived/keepalived.conf

vrrp_instance VI_1 {
    #備用服務器上爲 BACKUP
    state MASTER
    #綁定vip的網卡爲ens33,你的網卡和阿銘的可能不同,這裏須要你改一下
    interface ens33
    virtual_router_id 51
    #備用服務器上爲90
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass zhangduanya
    }
    virtual_ipaddress {
        192.168.14.14
    }
}
virtual_server 192.168.14.14 80 {
    #(每隔10秒查詢realserver狀態)
    delay_loop 10
    #(lvs 算法)
    lb_algo wlc
    #(DR模式)
    lb_kind DR
    #(同一IP的鏈接60秒內被分配到同一臺realserver)
    persistence_timeout 0
    #(用TCP協議檢查realserver狀態)
    protocol TCP
    real_server 192.168.14.137 80 {
        #(權重)
        weight 100
        TCP_CHECK {
        #(10秒無響應超時)
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.14.138 80 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

[root@zhdy-01 ~]# echo 1 >/proc/sys/net/ipv4/ip_forward #配置完keepalived後,須要開啓端口轉發

[root@zhdy-01 ~]# systemctl start keepalived

xm02(Slave LVS + Keepalived)192.168.14.138

[root@zhdy-01 ~]# yum install -y keepalived

[root@zhdy-01 ~]# vim /etc/keepalived/keepalived.conf 

vrrp_instance VI_1 {
    #備用服務器上爲 BACKUP
    state BACKUP
    #綁定vip的網卡爲ens33,你的網卡和阿銘的可能不同,這裏須要你改一下
    interface ens33
    virtual_router_id 51
    #備用服務器上爲90
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass zhangduanya
    }
    virtual_ipaddress {
        192.168.14.14
    }
}
virtual_server 192.168.14.14 80 {
    #(每隔10秒查詢realserver狀態)
    delay_loop 10
    #(lvs 算法)
    lb_algo wlc
    #(DR模式)
    lb_kind DR
    #(同一IP的鏈接60秒內被分配到同一臺realserver)
    persistence_timeout 0
    #(用TCP協議檢查realserver狀態)
    protocol TCP
    real_server 192.168.14.137 80 {
        #(權重)
        weight 100
        TCP_CHECK {
        #(10秒無響應超時)
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.14.138 80 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

[root@zhdy-01 ~]# echo 1 >/proc/sys/net/ipv4/ip_forward #配置完keepalived後,須要開啓端口轉發

[root@zhdy-01 ~]# systemctl start keepalived

xm03(Nginx server1+tomcat+jdk)192.168.14.139

#把vip綁定到lo上
vim /usr/local/sbin/lvs_rs.sh

#! /bin/bash
vip=192.168.14.14
#把vip綁定在lo上,是爲了實現rs直接把結果返回給客戶端
ifdown lo
ifup lo
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#如下操做爲更改arp內核參數,目的是爲了讓rs順利發送mac地址給客戶端
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

兩臺Real server分別執行腳本
# sh /usr/local/sbin/lvs_rs.sh
查看一下兩臺real server的router -n
# route -n
查看IP是否已經綁在lo卡上
# ip addr

#安裝nginx+php+mysql(編譯使用)+tomcat+jdk

xm04(Nginx server1+tomcat+jdk)192.168.14.140

​#把vip綁定到lo上
vim /usr/local/sbin/lvs_rs.sh

#! /bin/bash
vip=192.168.14.14
#把vip綁定在lo上,是爲了實現rs直接把結果返回給客戶端
ifdown lo
ifup lo
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#如下操做爲更改arp內核參數,目的是爲了讓rs順利發送mac地址給客戶端
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

兩臺Real server分別執行腳本
# sh /usr/local/sbin/lvs_rs.sh
查看一下兩臺real server的router -n
# route -n
查看IP是否已經綁在lo卡上
# ip addr

#安裝nginx+php+mysql(編譯使用)+tomcat+jdk

xm05(zabbix)192.168.14.141

沒錯zabbx須要注意的點來了,分爲服務端和客戶端,此處的客戶端爲mysql服務器和兩個web服務器

而後安裝到位後個性化的監控腳本這裏不展現了,留下一篇來專門回憶

#下載yum源
[root@yb1 ~]# cd /usr/local/src
[root@yb1 src]#  
wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
#安裝yum源
[root@yb1 src]# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
2.3 安裝zabbix及其組件注意必定要安裝好mysql(此過程會安裝php和http服務)
[root@yb1 src]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql

#安裝mysql
#下載yum源
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
#安裝yum源
rpm -ivh mysql-community-release-el7-5.noarch.rpm
#安裝mysql
yum install -y mysql mysql-server mysql-devel

#配置mysql
#修改配置文件
vi /etc/my.cnf
#在[mysqld]下添加:
character_set_server = utf8
#重啓mysql
systemctl restart mysql
#登入mysql,配置
mysql -uroot
create database zabbix character set utf8;  //建立zabbix庫,並設置字符集爲utf-8
grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'zabbixpasswd';  //建立zabbix用戶並設置密碼,並登出mysql
#導入zabbix數據庫
cd /usr/share/doc/zabbix-server-mysql-3.2.7  
gzip -d create.sql.gz  
mysql -uroot  zabbix < create.sql //將數據和結構導入zabbix數據庫中

#配置zabbix
vim /etc/zabbix/zabbix_server.conf
DBHost=127.0.0.1
#此處寫zabbix所在機器的IP(生產環境中zabbix可能單獨使用一天機器)
#該IP應該和數據庫受權時指定的IP一致
DBName=zabbix
DBUser=zabbix
DBPassword=zabbixpasswd

#web界面配置
#放行80端口
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
#瀏覽器訪問並配置
http://192.168.14.141/zabbix

下面整理客戶端配置

#環境
zabbixagent:192.168.14.139 web服務器
zabbixagent:192.168.14.140 web服務器
zabbixagent:192.168.14.143 mysql服務器主
zabbixagent:192.168.14.144 mysql服務器從

#zabbixagent安裝
#下載yum源
[root@yb1 ~]# cd /usr/local/src
[root@yb1 src]#  wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
#安裝yum源
[root@yb1 src]# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
#安裝zabbix及其組件注意必定要安裝好mysql(此過程會安裝php和http服務)
[root@yb1 src]# yum install -y zabbix-agent 

#配置zabbix-agent
vim  /etc/zabbix/zabbix_agentd.conf 
#修改以下配置
Server=127.0.0.1修改成Server=192.168.14.141 //定義服務端的ip(被動模式)
ServerActive=127.0.0.1修改成ServerActive=192.168.14.141 //定義服務端的ip(主動模式)
Hostname=Zabbix server修改成Hostname=zabbix-web //這是自定義的主機名,一會還須要在web界面下設置一樣的主機名
#啓動zabbix客戶端服務
systemctl start zabbix-agent
#加入開機啓動
systemctl enable zabbix-agent

#到這一步下來就是服務端的web端監控配置了,按照具體的的個性化需求配置

xm06(mysql主)192.168.14.143

xm07(mysql從)192.168.14.144

以前有總結,疑問直接擺上來,若是說mysql安裝在一臺獨立的server,如何鏈接?以前都是安裝在一臺,若是分離那就直接使用ip地址嘍(數據庫主機)

這裏針對zrlog來設置數據庫,由於一個web上裝了zrlog、discuz、WordPress三個服務,每一個都要針對其設置數據庫和權限

這裏有個mysql+DRBD還沒搞清楚讓人很焦慮

xm08(NFS共享存儲服務器)192.168.14.145

恩這裏成短板了,也是談問題安裝不說了,nfs爲何出現,除了把相同的圖片這種內容放到這臺服務器上共享出去,還有個關鍵的地方,居然被我忽視了,既然能夠共享目錄,那麼zrlog和discuz這些的數據文件夾還有安裝文件夾直接放到nfs上直接共享掛載,就不須要重複安裝了也保證了負載均衡後數據的同步,其實同步是最關鍵的,第一次被分到web1上寫下了一篇文章,而後數據庫配置有問題就會致使下次登陸被分配到web2上消失了,哈哈這可怎麼行,因此就把這些所有共享出去,其餘的還沒想到,後面添加吧

xm09(NFS熱備服務器)192.168.14.146

rsync+inotify實時同步備份數據,備份的是全構架中須要提供的全部數據,除了zabbix是本身的數據庫爲了安全考慮

先分享一篇文章:inotify+rsync實現實時同步部署

就先到這裏了明天繼續,哦對了立刻過年啦,加油哈剛跟朋友聊天才明白本身的想法堅持就好

相關文章
相關標籤/搜索