您好,登錄后才能下訂單哦!
官網下載:
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
如果是新的系統安裝是需要安裝依賴包,可以掛載光盤用本地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 解決
再次執行
./configure --prefix=/usr/local/keepalived && make && make install 安裝成為
沒有任何錯誤出現
將keepalived添加到系統服務中
# 拷貝執行文件
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
# 將初始化腳本拷貝到系統初始化目錄下
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/
# 創建keepalived文件夾
mkdir /etc/keepalived/
# 將keepalived配置文件拷貝到etc下
cp /usr/local/keepalived-2.0.10/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
# 添加可執行權限
chmod +x /etc/init.d/keepalived
# 添加keepalived到開機啟動
chkconfig --add keepalived
chkconfig keepalived on
此時已加入系統服務 可使用services 啟動
#啟動
service keepalived start
#停止
service keepalived stop
#重啟
service keepalived restart
#查看啟動情況
ps -aux |grep keepalived
修改剛添加到系統的配置文件:vi /etc/keepalived/keepalived.conf
找到虛擬路由節點 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主節點,備用節點上設置為state BACKUP
interface ens32 //綁定虛擬機IP的網卡 兩個節點設置一樣 根據 ipaddr換成對應的網卡地址
virtual_router_id 51 //VRRP組名,主副節點設置必須一樣,指名各個節點屬于同一個VRRP組,同一個組的節點互相搶IP
priority 100 //優先級(1~254之間),備用節點必須比主節點優先級低
advert_int 1 //組播信息發送間隔,兩個節點設置必須一樣
authentication { //設置驗證信息, 兩個節點設置必須一樣,用于節點間信息轉發時的加密
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { // 虛擬IP兩個節點設置必須一樣,兩節點同時搶一個io
192.168.0.200/24 // 如果兩個nginx的ip分別是192.168.0.110,.120,則此處的虛擬ip跟它倆同一個網段即可 24代表3個255的子網掩碼
}
}
如果要 ping 192.168.0.200 還需要注釋掉配置文件中的# vrrp_strict
-----*****---
主備都搶到了虛擬ip
掛載了光盤可以直接安裝 tcpdump
yum -y install tcpdump
采用 tcpdump 抓包定位問題,以下是在192.168.0.110 主節點的抓包結果
tcpdump -i ens32 vrrp -n
由上圖可以看到,192.168.93.140和192.168.93.141兩個IP在輪流發送組播信號。而正常的應該是由MASTER服務器發送組播,如果BACKUP收不到MASTER的組播信號了,那么判定MASTER宕機了,BACKUP就會接手VIP
問題就是出現在了防火墻這里,防火墻阻止了vrrp組包發送
如果是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]#
如果添加了沒有正常重啟下服務器
重啟后正常.
服務器A:
服務器B:
至此Keepalived 安裝完成。
安裝 Nginx
安裝所需環境
Nginx 是 C語言 開發,建議在 Linux 上運行,當然,也可以安裝 Windows 版本,本篇則使用 CentOS 7 作為安裝環境。
一. gcc 安裝
安裝 nginx 需要先將官網下載的源碼進行編譯,編譯依賴 gcc 環境,如果沒有 gcc 環境,則需要安裝:
yum install gcc-c++
二. PCRE pcre-devel 安裝
PCRE(Perl Compatible Regular Expressions) 是一個Perl庫,包括 perl 兼容的正則表達式庫。nginx 的 http 模塊使用 pcre 來解析正則表達式,所以需要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre 開發的一個二次開發庫。nginx也需要此庫。命令:
yum install -y pcre pcre-devel
三. zlib 安裝
zlib 庫提供了很多種壓縮和解壓縮的方式, nginx 使用 zlib 對 http 包的內容進行 gzip ,所以需要在 Centos 上安裝 zlib 庫。
yum install -y zlib zlib-devel
四. OpenSSL 安裝
OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及 SSL 協議,并提供豐富的應用程序供測試或其它目的使用。
nginx 不僅支持 http 協議,還支持 https(即在ssl協議上傳輸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
出現這個就 沒問題了
[root@localhost nginx-1.14.2]# make && nake install
如果 沒有生成Nginx 文件夾 就分開執行 1. make 2. make install
nginx 命令
5.啟動
$ /usr/local/nginx/sbin/nginx
檢查是否啟動成功:
打開瀏覽器訪問此機器的 IP,如果瀏覽器出現 Welcome to nginx! 則表示 Nginx 已經安裝并運行成功。
部分命令如下:
重啟:
$ /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
強制關閉:
$ pkill nginx
經過編譯安裝以及解決問題,Nginx 已經運行正常,但是此時 Nginx 并沒有添加進系統服務。接下來會將 Nginx 添加進系統服務并且設置開機啟動。
在 /usr/lib/systemd/system 目錄中添加 nginx.service 內容如下
[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 設置開機啟動
Nginx 安裝成功.
下面來測試下 主備 nginx
[root@localhost ~]# cd /usr/local/nginx/html/
修改 主 機 index.html
添加 <h2>MASTTER:192.168.0.110</h2>
修改 備 機 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
這是 正常情況下訪問:
下 面是關閉服務器 A 訪問的頁面
再把服務器A打 開訪問網頁
接著添加 一nginx 腳本 :新建 chk_nginx.sh
[root@localhost ~]# cd /etc/keepalived
[root@localhost keepalived]# touch chk_nginx.sh
內容如下
[root@localhost keepalived]# chmod +x chk_nginx.sh 添加執行權限
修改keepalived.conf
[root@localhost keepalived]# systemctl restart keepalived
ok 測試 腳本先 執行
[root@localhost keepalived]# systemctl stop nginx
再訪問 網頁,發現轉到備機上了
實驗完成。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。