RHCS紅帽集羣套件實現Nginx高可用

一、什麼時RHCS

RHCS(Red Hat Cluster Suite),也就是紅帽子集羣套件,RHCS是一個能夠提供高可用性、高可靠性、負載均衡、存儲共享且經濟廉價的集羣工具集合,它將集羣系統中三大集羣架構融合一體,可以給web應用、數據庫應用等提供安全、穩定的運行環境。RHCS提供了集羣系統中三種集羣構架,分別是高可用性集羣、負載均衡集羣、存儲集羣。

在這裏插入圖片描述
最上層時LVS負載均衡層,中間一層是Real Server層,就是服務節點部分,最後一層是共享存儲層,主要用於給GFS文件系統提供共享存儲空間

二、在集羣中常用到的相關名詞

  • 節點(node)
    運行集羣進程的一個獨立主機,成爲節點,節點是HA的核心組成部分,每個節點上運行着操作系統和集羣軟件的服務,在集羣中,節點有主次之分,‘主’被稱爲主節點,‘次’被稱爲備用/備份節點,每個節點擁有爲一個主機名 ,並且擁有屬於自己的一組資源,有磁盤、文件系統、網絡地址和應用服務。主節點上一般運行着一個或多個應用服務,而備用節點一般處於監控狀態
  • 資源(resource)
    資源是一個節點可用控制的實體,並且當節點發生故障時,這些資源能被其他節點接管
  • 事件(event)
    集羣中可能發生的事情,如節點系統故障、網絡連通故障、網卡故障、應用程序故障等。這些事件都會導致節點的資源發生轉移,HA的測試也是基於這些事件來進行的
  • 動作(action)
    事件發生HA的響應方式,動作是有shell腳步控制的,例如,當某個節點發生故障後,備份節點將通過事先設定好的執行腳本進行服務的關閉或啓動,進而接管故障節點的資源

三、RHCS的集羣架構之一:高可用性集羣

1、部署Nginx

在server2中配置

[root@server ~]# tar zxf nginx-1.14.0.tar.gz 
[root@server ~]# vim  nginx-1.14.0/src/core/nginx.h
#define nginx_version      1014000
#define NGINX_VERSION      "1.14.0"
#define NGINX_VER          "nginx/"
[root@server ~]# cd  nginx-1.14.0/auto/cc/gcc
# debug
#CFLAGS="$CFLAGS -g"
[root@server nginx-1.14.0]# yum install gcc pcre-devel openssl-devel -y
[root@server nginx-1.14.0]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio
[root@server nginx-1.14.0]# make && make install
[root@server nginx]# ln -s /usr/local/nginx/sbin/nginx /sbin/
[root@server ~]# useradd -M -d /usr/local/nginx/  nginx
[root@server2 conf]# vim nginx.conf
        upstream westos{
        server 172.25.66.3:80;
        server 172.25.66.4:80;
        }
 server {
                listen 80;
                server_name www.westos.org;
                location / {
                        proxy_pass http://westos;
                }
        }

將配置好的文件傳給server5

[root@server local]# scp -r nginx/ [email protected]:/usr/local/
[root@server5 ~]# useradd -M -d /usr/local/nginx/ -u 800 nginx
[root@server5 ~]# vim /etc/security/limits.conf 
nginx		-		nofile	65535
[root@server5 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

2、搭建RHCS環境

  • [實驗環境]
    server2 172.25.66.2(配置Nginx、ricci、luci)
    server3 172.25.66.3(Apache)
    server4 172.25.66.4 (Apache)
    server5 172.25.66.5(配置Nginx、ricci)
  • [下載應用軟件及初始配置]
  1. 配置高配yum源後,在server2中下載RHCS圖形網頁管理工具ricci(圖形裏的集羣管理)和luci(圖形界面),在server5上下載ricci
[root@server ~]# cat /etc/yum.repos.d/rhel-source.repo
[rhel6.5]
name=rhel6.5
baseurl=http://172.25.66.250/rhel6.5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[HighAvailability]
name=HighAvailability
baseurl=http://172.25.66.250/rhel6.5/HighAvailability
enable=1
gpgcheck=0
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.66.250/rhel6.5/LoadBalancer
enable=1
gpgcheck=0
[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.66.250/rhel6.5/ResilientStorage
enable=1
gpgcheck=0
[ScalableFileSystem]
name=ScalableFileSystem
baseurl=http://172.25.66.250/rhel6.5/ScalableFileSystem
enable=1
gpgcheck=0
[root@server local]# yum install -y ricci
[root@server local]# yum install -y luci
[root@server5 ~]# yum install -y ricci

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

  1. 在server2和server5中設置ricci登錄密碼,打開luci和ricci,並設置開機自啓動
[root@server local]# passwd ricci
[root@server local]# chkconfig ricci on
[root@server local]# /etc/init.d/ricci start
[root@server local]# /etc/init.d/luci start
[root@server local]# chkconfig luci on
[root@server5 ~]# chkconfig ricci on
[root@server5 ~]# /etc/init.d/ricci start
[root@server5 ~]# passwd ricci
[root@server5 ~]# nginx 
  1. 在物理主機中作解析
[root@foundation66 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.254.250	content.example.com
172.25.66.2	server2	www.westos.org	bbs.westos.org  westos.org
172.25.66.5	server5
  • [創建集羣]
  1. 在瀏覽器中輸入 https://server2:8084
輸入的是cman服務器的URL,luci服務器的URL語法爲:https://172.25.66.2:luci_server_port
luci_server_port的默認值爲8084

首次訪問 luci 時,網頁瀏覽器會根據顯示的自我簽名 SSL 證書( luci 服務器的證書)給出具體提示。確認一個或者多個對話框後,網頁顯示器會顯示 luci 登錄頁面。
在這裏插入圖片描述
在這裏插入圖片描述

  1. 登錄進入後點擊管理集羣開始添加集羣(用戶密碼時服務器的用戶名密碼,用戶名爲root)
    在這裏插入圖片描述
    在這裏插入圖片描述

1、在「集羣名稱」 文本框中輸入集羣名稱。集羣名稱不能超過 15 個字符。
如果集羣中的每個節點都有同樣的 ricci 密碼,您可以選擇「在所有 節 點中使用相同的密 碼 」 ,這樣就可在添加的節點中自動填寫「密 碼 」 字段。
2、在「 節 點名稱」 欄中輸入集羣中節點的名稱,並在「密 碼 」 欄中爲該節點輸入 ricci 密碼。
3、如果要在 ricci 代理中使用不同的端口,是默認的 11111 端口,可以更改那個參數。
4、如果不想要在創建集羣時升級已經在節點中安裝的集羣軟件軟件包,請選擇「使用本地安裝的軟 件包」 選項。如果要升級所有集羣軟件軟件包,請選擇「下 載軟 件包」 選項
*5、添加完成後會發現一直在等待狀態,這時查看服務器,會發現server1已經重啓,這時只需要啓動後再開啓服務就成功添加節點了。

查看集羣,當在瀏覽器中設置完成後,可以查看到集羣信息用clustat或是cat /etc/clustat/clustat.conf都可以查看
在這裏插入圖片描述

四、配置故障切換

1、向集羣添加fence

** fence的概念**:fence設備是RHCE集羣中不可缺少的一個組成部分,通過fence設備可以避免因出現不可預知的情況而造成“腦裂”現象,fence設備的出現,就是爲了解決類似的問題,fence設備主要通過服務器或存儲本身的硬件管理接口,或者北部電源管理設備來對服務器或存儲直接發出硬件管理指令,將服務器重啓或關機,或者與網絡斷開鏈接
** fence的工作原理**:當意外原因導致主機異常或是宕機時,備機會首先調用fence設備,然後通過fence設備將異常主機重啓或者從網絡隔離,當fence操作成功執行後,返回信息給備機,備機在接到fence成功的信息後,開始接管主機的服務和資源。這樣通過fence設備,將異常節點佔據的資源進行了釋放,保證了資源和服務始終運行在一個節點上
實驗環境:物理主機,172.25.66.250

  • 安裝軟件
[root@foundation66 kiosk]# yum list fence-*
[root@foundation66 kiosk]# yum install -y fence-virtd-multicast.x86_64 fence-virtd.x86_64 fence-virtd-libvirt.x86_64
[root@foundation66 kiosk]# fence_virtd -c		
#選擇工作模式“multicast”,地址“225.0.0.12”,端口“1229”,family“ipv4”,網絡interface“br0”因爲虛擬服務器受主機控制的網卡是br0,key_file = "/etc/cluster/fence_xvm.key";Backend module “libvirt”; 

在這裏插入圖片描述

  • 生成128位key,啓動fence
[root@foundation66 kiosk]# dd if=/dev/urandom of=fence_xvm.key bs=128 count=1
[root@foundation66 kiosk]# mkdir /etc/cluster
[root@foundation66 kiosk]# mv fence_xvm.key /etc/cluster/
[root@foundation66 cluster]# scp fence_xvm.key server2:/etc/cluster/
[root@foundation66 cluster]# scp fence_xvm.key server5:/etc/cluster/
[root@foundation66 cluster]# systemctl restart fence_virtd.service 
  • 在luci(https://server2:8084)上的配置
    • 登錄luci選擇集羣,點擊Fence Device
    • 點擊ADD選擇,選擇模式爲Fence virt (Multicast Mode),輸入一個Fence名稱,點擊submit
      在這裏插入圖片描述
    • 點擊node,選擇server2,點擊界面下的Add Fence Method,輸入一個server2的Fence名稱,例如vmfence-1;同樣,選擇server5,點擊界面下的Add Fence Method,輸入一個server5的Fence名稱,例如vmfence-2
      在這裏插入圖片描述
    • 點擊node,選擇server2,點擊Add Fence Instance,選擇之前設置好的vmfence,輸入Domin(可以填server的hostname;但是爲了保險起見,選擇虛擬服務器的UUID);並且在server5上作相同操作
      在這裏插入圖片描述
      在這裏插入圖片描述
      在這裏插入圖片描述

2、添加服務

添加httod服務

  • 在server2和server4上配置好httpd,編寫好自己的網頁(vim /var/www/html/index.html文件)
  • 啓動服務,檢測是否正常顯示網頁,檢測完成後將兩臺服務主機的httpd服務關閉
    • 交給集羣的資源一定是要關閉掉的,因爲要交給集羣去自動開啓
  • 進入luci集羣,點擊Faliover Domains,點擊ADD,輸入自定義的Name,例如webfile,選中Prioritized、Restricted(只在指定節點跑)、No Failback(資源故障回切),選中下方的server2和server5的Member並輸入優先級,這裏可以給server2輸入1,給server5輸入10,意思就是一server2爲主節點,數字越小優先級越高
    在這裏插入圖片描述
  • 點擊Resource,點擊ADD,選擇模式IP Address,輸入IP和NETMAKE,IP不能共用,所以這個IP填的是VIP,點擊submit
    在這裏插入圖片描述
  • 點擊Resource,點擊Add,選擇模式Script,輸入自定義Name,例如httpd,並輸入腳本路徑“/etc/init.d/httpd”,點擊submit
    在這裏插入圖片描述
  • 點擊Service Groups,點擊Add,輸入一個自定義Service Name,例如www。選中”Automatically Start This Service“(集羣自動開啓)和”Run Exclusive“,選中”Failover Domain”下剛纔創建的”webfile“,”Recovery Policy”選擇”Relocate“,點擊下方Add Resource,選擇之前創建的Resources,因爲有兩個,所以需要添加兩次,完成後點擊Submit;
    在這裏插入圖片描述
    在這裏插入圖片描述

3、測試

  • 在瀏覽器中輸入VIP,查看頁面是否顯示
    在這裏插入圖片描述
    在server2上用命令行查看clustat
    在這裏插入圖片描述
    現在服務在server2上,可以用命令修改:clusvcadm -r www -m server 5
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 在server2中關閉httpd服務,並用clustat命令查看,等待5秒鐘,可以看到Owner跳到server5上
    在這裏插入圖片描述
  • 開啓和關閉httpd服務
    • clusvcadm -s www #關閉httpd服務
      在這裏插入圖片描述
    • clusvcadm -e www #打開httpd服務
      在這裏插入圖片描述
  • 也可以使用命令“echo c>/proc/sysrq-trigger”使server2的內核崩潰,實驗結果是server2崩潰後,自動轉換到server5的界面
    在這裏插入圖片描述
    將server2重新啓動,clustat查看server2重新started。其實server2不止是重新啓動,還會自動添加到fence中,並且VIP也會自動飄過來,在server2重新啓動後不做操作,直接將server5的內核崩潰測試,發現網頁自動跳轉到server2界面
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章