官網(wǎng)下載:
keepalived-2.0.12.tar
nginx-1.14.2.tar
主機A:192.168.0.110/24
主機B:192.168.0.120/24
VRRP:192.168.0.200/24
用winscp把文件上傳到 /usr/local/
cd /usr/local/
安裝keepalived:
(2)# cd /usr/local/
(3)# tar -zxvf keepalived-2.0.12.tar.gz
(4)# cd keepalived-2.0.12
(5)# ./configure --prefix=/usr/local/keepalived
(6)# make && make install
[root@localhost local]# tar -zxvf keepalived-2.0.12.tar.gz
安裝路徑:/usr/local/keepalived
[root@localhost keepalived-2.0.12]# ./configure --prefix=/usr/local/keepalived
[root@localhost keepalived-2.0.12]# make && make install
如果是新的系統(tǒng)安裝是需要安裝依賴包,可以掛載光盤用本地yum安裝。
[root@localhost keepalived-2.0.12]# mkdir /mnt/cdrom
[root@localhost keepalived-2.0.12]# mount /dev/cdrom /mnt/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only
cd /etc/yum.repos.d/
cp CentOS-Base.repo CentOS-Base.repo.bak
vi CentOS-Base.repo
保存
[root@localhost yum.repos.d]# yum repolist
報錯1:
一次解決依賴包問題
[root@localhost yum.repos.d]# yum -y install openssl-devel gcc libnl-devel
[root@localhost keepalived-2.0.12]# yum -y install gcc 解決
報錯2:
[root@localhost keepalived-2.0.12]# yum -y install openssl-devel 解決
報錯3:
[root@localhost keepalived-2.0.12]# yum -y install libnl-devel 解決
再次執(zhí)行
./configure --prefix=/usr/local/keepalived && make && make install 安裝成為
沒有任何錯誤出現(xiàn)
將keepalived添加到系統(tǒng)服務(wù)中
# 拷貝執(zhí)行文件
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
# 將初始化腳本拷貝到系統(tǒng)初始化目錄下
cp /usr/local/keepalived-2.0.10/keepalived/etc/init.d/keepalived /etc/init.d/
# 將keepalived配置文件拷貝到etc下
cp /usr/local/keepalived-2.0.10/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# 創(chuàng)建keepalived文件夾
mkdir /etc/keepalived/
# 將keepalived配置文件拷貝到etc下
cp /usr/local/keepalived-2.0.10/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
# 添加可執(zhí)行權(quán)限
chmod +x /etc/init.d/keepalived
# 添加keepalived到開機啟動
chkconfig --add keepalived
chkconfig keepalived on
此時已加入系統(tǒng)服務(wù) 可使用services 啟動
#啟動
service keepalived start
#停止
service keepalived stop
#重啟
service keepalived restart
#查看啟動情況
ps -aux |grep keepalived
修改剛添加到系統(tǒng)的配置文件:vi /etc/keepalived/keepalived.conf
找到虛擬路由節(jié)點 vrrp_instance(Virtual Router Redundancy Protocol)
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_DEVEL01 //router_id 不能想同
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER //MASTER主節(jié)點,備用節(jié)點上設(shè)置為state BACKUP
interface ens32 //綁定虛擬機IP的網(wǎng)卡 兩個節(jié)點設(shè)置一樣 根據(jù) ipaddr換成對應(yīng)的網(wǎng)卡地址
virtual_router_id 51 //VRRP組名,主副節(jié)點設(shè)置必須一樣,指名各個節(jié)點屬于同一個VRRP組,同一個組的節(jié)點互相搶IP
priority 100 //優(yōu)先級(1~254之間),備用節(jié)點必須比主節(jié)點優(yōu)先級低
advert_int 1 //組播信息發(fā)送間隔,兩個節(jié)點設(shè)置必須一樣
authentication { //設(shè)置驗證信息, 兩個節(jié)點設(shè)置必須一樣,用于節(jié)點間信息轉(zhuǎn)發(fā)時的加密
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { // 虛擬IP兩個節(jié)點設(shè)置必須一樣,兩節(jié)點同時搶一個io
192.168.0.200/24 // 如果兩個nginx的ip分別是192.168.0.110,.120,則此處的虛擬ip跟它倆同一個網(wǎng)段即可 24代表3個255的子網(wǎng)掩碼
}
}
如果要 ping 192.168.0.200 還需要注釋掉配置文件中的# vrrp_strict
-----*****---
主備都搶到了虛擬ip
掛載了光盤可以直接安裝 tcpdump
yum -y install tcpdump
采用 tcpdump 抓包定位問題,以下是在192.168.0.110 主節(jié)點的抓包結(jié)果
tcpdump -i ens32 vrrp -n
由上圖可以看到,192.168.93.140和192.168.93.141兩個IP在輪流發(fā)送組播信號。而正常的應(yīng)該是由MASTER服務(wù)器發(fā)送組播,如果BACKUP收不到MASTER的組播信號了,那么判定MASTER宕機了,BACKUP就會接手VIP
問題就是出現(xiàn)在了防火墻這里,防火墻阻止了vrrp組包發(fā)送
如果是Firewalld防火墻 則主、備都運行下面的命令
[root@localhost etc]# firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens32 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
success
或者
[root@localhost etc]# firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens32 --protocol vrrp -j ACCEPT
success
[root@localhost etc]# firewall-cmd --reload
success
[root@localhost etc]#
如果添加了沒有正常重啟下服務(wù)器
重啟后正常.
服務(wù)器A:
服務(wù)器B:
至此Keepalived 安裝完成。
安裝 Nginx
安裝所需環(huán)境
Nginx 是 C語言 開發(fā),建議在 Linux 上運行,當(dāng)然,也可以安裝 Windows 版本,本篇則使用 CentOS 7 作為安裝環(huán)境。
一. gcc 安裝
安裝 nginx 需要先將官網(wǎng)下載的源碼進(jìn)行編譯,編譯依賴 gcc 環(huán)境,如果沒有 gcc 環(huán)境,則需要安裝:
yum install gcc-c++
二. PCRE pcre-devel 安裝
PCRE(Perl Compatible Regular Expressions) 是一個Perl庫,包括 perl 兼容的正則表達(dá)式庫。nginx 的 http 模塊使用 pcre 來解析正則表達(dá)式,所以需要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre 開發(fā)的一個二次開發(fā)庫。nginx也需要此庫。命令:
yum install -y pcre pcre-devel
三. zlib 安裝
zlib 庫提供了很多種壓縮和解壓縮的方式, nginx 使用 zlib 對 http 包的內(nèi)容進(jìn)行 gzip ,所以需要在 Centos 上安裝 zlib 庫。
yum install -y zlib zlib-devel
四. OpenSSL 安裝
OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及 SSL 協(xié)議,并提供豐富的應(yīng)用程序供測試或其它目的使用。
nginx 不僅支持 http 協(xié)議,還支持 https(即在ssl協(xié)議上傳輸http),所以需要在 Centos 安裝 OpenSSL 庫。
yum install -y openssl openssl-devel
不過在安裝keepalived 時都安裝 了這些依賴包了,下面直接安裝 就 行了.
[root@localhost ~]# cd /usr/local/
[root@localhost local]# tar -zxvf nginx-1.14.2.tar.gz
[root@localhost local]# cd nginx-1.14.2
[root@localhost nginx-1.14.2]# ./configure --prefix=/usr/local/nginx
出現(xiàn)這個就 沒問題了
[root@localhost nginx-1.14.2]# make && nake install
如果 沒有生成Nginx 文件夾 就分開執(zhí)行 1. make 2. make install
nginx 命令
5.啟動
$ /usr/local/nginx/sbin/nginx
檢查是否啟動成功:
打開瀏覽器訪問此機器的 IP,如果瀏覽器出現(xiàn) Welcome to nginx! 則表示 Nginx 已經(jīng)安裝并運行成功。
部分命令如下:
重啟:
$ /usr/local/nginx/sbin/nginx –s reload
停止:
$ /usr/local/nginx/sbin/nginx –s stop
測試配置文件是否正常:
$ /usr/local/nginx/sbin/nginx –t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
強制關(guān)閉:
$ pkill nginx
經(jīng)過編譯安裝以及解決問題,Nginx 已經(jīng)運行正常,但是此時 Nginx 并沒有添加進(jìn)系統(tǒng)服務(wù)。接下來會將 Nginx 添加進(jìn)系統(tǒng)服務(wù)并且設(shè)置開機啟動。
在 /usr/lib/systemd/system 目錄中添加 nginx.service 內(nèi)容如下
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
添加完成后再來看下
輸入 systemctl start nginx 啟動
然后輸入 systemctl enable nginx 設(shè)置開機啟動
Nginx 安裝成功.
下面來測試下 主備 nginx
[root@localhost ~]# cd /usr/local/nginx/html/
修改 主 機 index.html
添加
[root@localhost html]# systemctl restart nginx
如果訪問不了 WEB 就在隔火墻上 添加
[root@localhost html]# firewall-cmd --zone=public --permanent --add-port=80/tcp
success
[root@localhost html]# firewall-cmd --reload
success
這是 正常情況下訪問:
下 面是關(guān)閉服務(wù)器 A 訪問的頁面
再把服務(wù)器A打 開訪問網(wǎng)頁
接著添加 一nginx 腳本 :新建 chk_nginx.sh
[root@localhost ~]# cd /etc/keepalived
[root@localhost keepalived]# touch chk_nginx.sh
內(nèi)容如下
[root@localhost keepalived]# chmod +x chk_nginx.sh 添加執(zhí)行權(quán)限
修改keepalived.conf
[root@localhost keepalived]# systemctl restart keepalived
ok 測試 腳本先 執(zhí)行
[root@localhost keepalived]# systemctl stop nginx
再訪問 網(wǎng)頁,發(fā)現(xiàn)轉(zhuǎn)到備機上了
實驗完成。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。