一.準備作業
首先我們需要準備兩臺主機,在此之前要在兩臺機器上安裝nginx和keepalived服務,這兩個服務在安裝之前都需要安裝依賴的.首先是nginx的安裝:
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
yum install nginx -y
然后就是keepalived的安裝,也是先安裝依賴:
yum install -y curl gcc openssl-devel libnl3-devel net-snmp-devel
yum install keepalived -y
接下來就是要確保防火墻,selinux以及時間同步問題.
二.具體配置
由于我們是nginx和keepalived相結合,最后是在網頁上訪問的,所以我們需要先配置一個nginx訪問界面的html.這個檔案是在:/usr/local/nginx/html/下的index.html,具體配置如下:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>Master ip:192.168.204.130</p>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
這里面的ip地址設定為本機ip地址即可,主機的配置如上所示,從機的配置也是這樣,唯一要修改的就是IP地址,這樣我們訪問的時候就可以看出不同了,下面我會給大家看一下訪問的網頁.

以上就是兩臺機器的nginx網頁了,第一張是主機,第二張是從機的.
接下來我們就要寫個腳本了,要使用腳本監控nginx.
首先要:
yum install psmisc -y
接下來我們要創建腳本檔案,在/etc/keepalived/創建一個check_nginx,sh檔案,具體內容如下:
#!/bin/bash
#Auto check nginx process if is actived
killall -0 nginx
if [[ $? -ne 0 ]]
then
systemctl stop keepalived
fi
兩臺機器上都需要創建這個腳本檔案.接下來就是keepalived的集體配置了.
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
root@director_server
}
notification_email_from root@director_server
smtp_server 127.0.0.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_script check_nginx {
script "/etc/keepalived/check_nginx.sh"
interval 1
#weight -20
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
mcast_src_ip 192.168.204.130
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.204.196
}
track_script {
check_nginx
}
}
如上圖是我們主機的配置,在這里我們需要注意的就是我們check_nginx.sh 的檔案路徑以及檔案名稱,對照著上面的配置進行修改基本上是沒有什么問題的.
三.測驗
接下來我們配置完成,服務重啟之后就要進行網頁測驗了,首先我們訪問一下虛擬ip,
我們會發現網頁上的ip地址為主機的ip地址,接下來我們模擬宕機,先將主機的服務關閉,然后繼續訪問虛擬ip,看看會發生什么變化.
看上面的圖我們可以發現在主機服務關閉時,我們還是可以繼續訪問虛擬IP的,只是這時候的訪問頁面就跳到了我們從機的IP.
四.總結和排錯思路
本次的配置程序其實并不是很難,主要是讓我們通過動手配置來真切的體會到了keepalived的高可用以及在一臺服務器出現宕機其他從機都可以代替主機的身份繼續保持服務的繼續運行,這一點時非常實用的,接下來我也會與大家分享一下我在這次配置中所遇到的問題.
問題一:我在寫nginx的網頁配置時發現無法添加本機的ip地址,但是服務重啟并不會報錯,我發現我所添加的 文本格式也是沒有問題的,接下來我們就要思考一下為什么index.html修改不生效呢?我們就要去到nginx的源檔案目錄下的defalut.conf檔案中,后來我發現原來是目錄寫錯了,我配置的檔案在/usr/local/nginx/html目錄下,而我的組態檔寫的識別目錄在/usr/share/nginx/html目錄下,在修改之后再次重繪網頁就發現多加了IP.
問題二:我的從機在訪問網頁時顯示的并不是nginx服務的頁面,而是apache
這個時候我們就要思考是否是nginx服務沒有啟動,果然由于我在修改完組態檔之后直接運行了重啟命令,并沒有查看服務狀態,隨后我查看了nginx服務的運行狀態發現出現報錯了,之后我們需要查看報錯日志.

我發現報錯日志里寫道80埠被占用,
然后我們使用netstat命令來查看并過濾一下80埠被什么服務占用,我們發現原來是被apache服務占用了80埠,所以nginx服務無法啟動,我們在關閉apache服務后,nginx就可以正常啟動了,再一次重繪網頁也正常了.在這里我在訪問頁面出現apache的時候我就知道了是apache服務占用了埠,但是我之所以說的這么詳細就是要和大家分享排錯思路,我們在發現錯誤時第一個要想到是什么造成了錯誤的發生,在組態檔檢查無誤之后就要想到去查看日志檔案,然后再繼續進行后面的排錯.希望本次的分享對大家的學習和排錯有了一點點的幫助,另外祝大家七夕節快樂!!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/293916.html
標籤:其他
