溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Centos7 keepalived +nginx

發(fā)布時(shí)間:2020-05-30 20:15:40 來源:網(wǎng)絡(luò) 閱讀:199 作者:libinqi456 欄目:系統(tǒng)運(yùn)維

官網(wǎng)下載:
keepalived-2.0.12.tar
nginx-1.14.2.tar

主機(jī)A:192.168.0.110/24
主機(jī)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

Centos7 keepalived +nginx
保存

[root@localhost yum.repos.d]# yum repolist

Centos7 keepalived +nginx

報(bào)錯(cuò)1:
Centos7 keepalived +nginx
一次解決依賴包問題

[root@localhost yum.repos.d]# yum -y install openssl-devel gcc libnl-devel
[root@localhost keepalived-2.0.12]# yum -y install gcc   解決 

報(bào)錯(cuò)2:
Centos7 keepalived +nginx

[root@localhost keepalived-2.0.12]# yum -y install openssl-devel  解決

報(bào)錯(cuò)3:
Centos7 keepalived +nginx

[root@localhost keepalived-2.0.12]# yum -y install libnl-devel  解決

再次執(zhí)行

./configure --prefix=/usr/local/keepalived  && make && make install    安裝成為

沒有任何錯(cuò)誤出現(xiàn)
Centos7 keepalived +nginx

將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到開機(jī)啟動(dòng)
chkconfig --add keepalived
chkconfig keepalived on

此時(shí)已加入系統(tǒng)服務(wù) 可使用services 啟動(dòng)

#啟動(dòng)
service keepalived start
#停止
service keepalived stop
#重啟
service keepalived restart
#查看啟動(dòng)情況
ps -aux |grep keepalived

修改剛添加到系統(tǒng)的配置文件:vi /etc/keepalived/keepalived.conf
找到虛擬路由節(jié)點(diǎn) 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é)點(diǎn),備用節(jié)點(diǎn)上設(shè)置為state BACKUP
    interface ens32        //綁定虛擬機(jī)IP的網(wǎng)卡  兩個(gè)節(jié)點(diǎn)設(shè)置一樣 根據(jù) ipaddr換成對(duì)應(yīng)的網(wǎng)卡地址
    virtual_router_id 51  //VRRP組名,主副節(jié)點(diǎn)設(shè)置必須一樣,指名各個(gè)節(jié)點(diǎn)屬于同一個(gè)VRRP組,同一個(gè)組的節(jié)點(diǎn)互相搶IP
    priority 100         //優(yōu)先級(jí)(1~254之間),備用節(jié)點(diǎn)必須比主節(jié)點(diǎn)優(yōu)先級(jí)低
    advert_int 1         //組播信息發(fā)送間隔,兩個(gè)節(jié)點(diǎn)設(shè)置必須一樣
    authentication {    //設(shè)置驗(yàn)證信息, 兩個(gè)節(jié)點(diǎn)設(shè)置必須一樣,用于節(jié)點(diǎn)間信息轉(zhuǎn)發(fā)時(shí)的加密
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {  // 虛擬IP兩個(gè)節(jié)點(diǎn)設(shè)置必須一樣,兩節(jié)點(diǎn)同時(shí)搶一個(gè)io
        192.168.0.200/24  // 如果兩個(gè)nginx的ip分別是192.168.0.110,.120,則此處的虛擬ip跟它倆同一個(gè)網(wǎng)段即可 24代表3個(gè)255的子網(wǎng)掩碼
    }
}

如果要 ping 192.168.0.200 還需要注釋掉配置文件中的# vrrp_strict

-----*****---
主備都搶到了虛擬ip
Centos7 keepalived +nginx
掛載了光盤可以直接安裝 tcpdump

 yum -y install tcpdump

采用 tcpdump 抓包定位問題,以下是在192.168.0.110 主節(jié)點(diǎn)的抓包結(jié)果
tcpdump -i ens32 vrrp -n
Centos7 keepalived +nginx

由上圖可以看到,192.168.93.140和192.168.93.141兩個(gè)IP在輪流發(fā)送組播信號(hào)。而正常的應(yīng)該是由MASTER服務(wù)器發(fā)送組播,如果BACKUP收不到MASTER的組播信號(hào)了,那么判定MASTER宕機(jī)了,BACKUP就會(huì)接手VIP

問題就是出現(xiàn)在了防火墻這里,防火墻阻止了vrrp組包發(fā)送

如果是Firewalld防火墻 則主、備都運(yùn)行下面的命令

[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ù)器
Centos7 keepalived +nginx
重啟后正常.
服務(wù)器A:
Centos7 keepalived +nginx
服務(wù)器B:
Centos7 keepalived +nginx
至此Keepalived 安裝完成。


安裝 Nginx
安裝所需環(huán)境
Nginx 是 C語言 開發(fā),建議在 Linux 上運(yùn)行,當(dāng)然,也可以安裝 Windows 版本,本篇?jiǎng)t使用 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) 是一個(gè)Perl庫,包括 perl 兼容的正則表達(dá)式庫。nginx 的 http 模塊使用 pcre 來解析正則表達(dá)式,所以需要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre 開發(fā)的一個(gè)二次開發(fā)庫。nginx也需要此庫。命令:

yum install -y pcre pcre-devel
三. zlib 安裝
zlib 庫提供了很多種壓縮和解壓縮的方式, nginx 使用 zlib 對(duì) http 包的內(nèi)容進(jìn)行 gzip ,所以需要在 Centos 上安裝 zlib 庫。

yum install -y zlib zlib-devel
四. OpenSSL 安裝
OpenSSL 是一個(gè)強(qiáng)大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及 SSL 協(xié)議,并提供豐富的應(yīng)用程序供測(cè)試或其它目的使用。
nginx 不僅支持 http 協(xié)議,還支持 https(即在ssl協(xié)議上傳輸http),所以需要在 Centos 安裝 OpenSSL 庫。

yum install -y openssl openssl-devel

不過在安裝keepalived 時(shí)都安裝 了這些依賴包了,下面直接安裝 就 行了.

[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)這個(gè)就 沒問題了
Centos7 keepalived +nginx

[root@localhost nginx-1.14.2]# make && nake install

Centos7 keepalived +nginx
如果 沒有生成Nginx 文件夾 就分開執(zhí)行 1. make 2. make install

nginx 命令

5.啟動(dòng)

$ /usr/local/nginx/sbin/nginx
檢查是否啟動(dòng)成功:

打開瀏覽器訪問此機(jī)器的 IP,如果瀏覽器出現(xiàn) Welcome to nginx! 則表示 Nginx 已經(jīng)安裝并運(yùn)行成功。

部分命令如下:
重啟:
$ /usr/local/nginx/sbin/nginx –s reload
停止:
$ /usr/local/nginx/sbin/nginx –s stop
測(cè)試配置文件是否正常:
 $ /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
強(qiáng)制關(guān)閉:
$ pkill nginx

經(jīng)過編譯安裝以及解決問題,Nginx 已經(jīng)運(yùn)行正常,但是此時(shí) Nginx 并沒有添加進(jìn)系統(tǒng)服務(wù)。接下來會(huì)將 Nginx 添加進(jìn)系統(tǒng)服務(wù)并且設(shè)置開機(jī)啟動(dòng)。
在 /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

添加完成后再來看下
Centos7 keepalived +nginx
輸入 systemctl start nginx 啟動(dòng)
Centos7 keepalived +nginx
然后輸入 systemctl enable nginx 設(shè)置開機(jī)啟動(dòng)
Centos7 keepalived +nginx
Nginx 安裝成功.

下面來測(cè)試下 主備 nginx

[root@localhost ~]# cd /usr/local/nginx/html/

修改 主 機(jī) index.html
添加 <h2>MASTTER:192.168.0.110</h2>
修改 備 機(jī) index.html
添加 <h2>BACKUP:192.168.0.120</h2>
記得修改完要重啟nginx

[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

這是 正常情況下訪問:
Centos7 keepalived +nginx
下 面是關(guān)閉服務(wù)器 A 訪問的頁面
Centos7 keepalived +nginx
Centos7 keepalived +nginx
再把服務(wù)器A打 開訪問網(wǎng)頁

Centos7 keepalived +nginx
Centos7 keepalived +nginx

接著添加 一nginx 腳本 :新建 chk_nginx.sh

[root@localhost ~]# cd /etc/keepalived
[root@localhost keepalived]# touch chk_nginx.sh

內(nèi)容如下
Centos7 keepalived +nginx

[root@localhost keepalived]# chmod +x chk_nginx.sh    添加執(zhí)行權(quán)限

修改keepalived.conf
Centos7 keepalived +nginx

[root@localhost keepalived]# systemctl restart keepalived

ok 測(cè)試 腳本先 執(zhí)行

[root@localhost keepalived]# systemctl stop nginx

再訪問 網(wǎng)頁,發(fā)現(xiàn)轉(zhuǎn)到備機(jī)上了
Centos7 keepalived +nginx
實(shí)驗(yàn)完成。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI