1. 程式人生 > >CentOS7 叢集配置

CentOS7 叢集配置

我一直以為的叢集是一批伺服器組成一個群體-有任務過來時快速分配,快速完成,所以在叢集環境搭建好之後,我就傻眼了,為什麼伺服器A上Nginx啟動,伺服器B上Nginx就會停掉。
去百度百科查了概念,雖表述的不簡潔,但勉強能懂,用我自己的話翻譯一下:叢集是將一些獨立的伺服器,通過叢集技術組成組,即多合一的模式,對外提供服務。首先保證的是高可用性,其次是可擴充套件性。
高可用性:一直都能提供服務,如業界常說的5個9。叢集實現的就是當伺服器A壞了,伺服器B能立馬接管伺服器A的職能,而廣大客戶是感知不到其中的變化的。
可擴充套件性:通俗地講 可橫向增加/減少伺服器。

  1. 需求
    在硬負載沒到位的情況下,使用Nginx提供負載服務。
  2. 可用環境
    同網段的IP地址尾號為20、25伺服器,作業系統:CentOS7.1
  3. 檢查工作
    因之前有過類似的經驗,通過heartbeat啟動VIP和Nginx服務,每隔一定時間進行健康檢查,檢測到主伺服器壞時,切換到備伺服器上,主伺服器復原後,自動切回來。
    提前做如下檢查:
    一:需要一個VIP -----可用IP 為26
    二:確定Nginx版本 -------CentOS7.1支援Nginx1.10.1
    三:確定CentOS7.1上是否可用Heartbeat-------Heartbeat已拆分成多個元件,改用pcs,pacemaker,corosync,fence-agents-all來實現。
  4. 部署
    1) 禁用防火牆和selinux

    systemctl disable firewalld.service
    systemctl stop firewalld.service

    修改/etc/sysconfig/selinux確保SELINUX=disabled,然後執行setenforce 0或者reboot伺服器以生效
    2) 兩節點主機名設定

    vi /etc/hosts  #兩臺伺服器一樣配置
    192.168.220.20 yd20
    192.168.220.25 yd25

    3) 兩節點ssh無密碼密銀訪問設定
    在之前的文章Hadoop 2.7.1 搭建 有詳細寫過,這裡不重寫。
    4) 建立叢集使用者
    使用pacemaker管理
    每個節點上操作相同

    passwd hacluster
    #設定密碼為hacluster2016

    5) 安裝相應軟體

    yum install -y resource-agents pacemaker pcs corosync fence-agents-all
    systemctl enable pcsd.service
    systemctl enable corosync.service
    systemctl enable pacemaker.service
    systemctl start pcsd.service
    systemctl start corosync.service
    systemctl start pacemaker.service

    6) 叢集節點之間認證

    pcs cluster auth yd25 yd20

    7) 建立並啟動叢集

    pcs cluster setup --start --name mycluster yd25 yd20

    8) 設定叢集自啟動

    pcs cluster enable --all

    9) 檢視叢集狀態資訊

    pcs cluster status

    10) 設定fence裝置
    corosync預設啟用了stonith,而當前叢集並沒有相應的stonith裝置,因此此預設配置目前尚不可用,這可以通過如下命令驗證:

    [[email protected] ~]# crm_verify -L -V
    error: unpack_resources:    Resource start-up disabled since no STONITH resources have been defined
    error: unpack_resources:    Either configure some or disable STONITH with the stonith-enabled option
    error: unpack_resources:    NOTE: Clusters with shared data need STONITH to ensure data integrity
    [[email protected] ~]# pcs property set stonith-enabled=false;
    #關閉stonith

    11) 設定VIP

    pcs resource create VIP ocf:heartbeat:IPaddr2 ip=192.168.220.26 cidr_netmask=24 nic=bond0 op monitor interval=30s

    12)設定Nginx

    pcs resource create Web nginx configfile=/etc/nginx/nginx.conf status10url="http://localhost/nginx_status" op monitor interval=1min

    因引數statusurl改成status10url,在這階段消耗了些時間。
    可用pcs resource describe ocf:heartbeat:nginx 檢視支援哪些引數

    13)將VIP和Nginx設定同組

    pcs resource group add ydjq VIP
    pcs resource group add ydjq Web

    非同組時會出現VIP在20伺服器上,而Web是在25伺服器上的情況。
    14)配置服務啟動順序

    pcs constraint order start Web then start VIP

    我看到網上大部分人都是先啟動VIP,然後再啟動web服務的,個人覺得先保證Web正常後,再啟動VIP-比較靠譜,因VIP啟動後-就對外服務了,而如果此時Web還沒有起來,接收到的請求就會報錯。
    15)指定優先的Location
    原因:當伺服器硬體配置不一樣的,可通過該設定,優先使用硬體配置好的伺服器。

    pcs constraint localtion Web prefers yd20=50
    pcs constraint localtion Web prefers yd25=45

    因我兩臺伺服器配置相同,未做此配置。
    16) 資源粘性
    實現:避免資源在節點間遷移-而引起的停止服務。
    控制服務保持在正在執行的節點上。
    Pacemaker為了達到最優分佈各個資源的目的,預設設定這個值為0

    pcs resource  defaults resource-stickiness=100

    至此,叢集配置完畢。

  5. 常用
    1) 手動切換
    兩臺都在online狀態時,服務執行在yd20伺服器上,想切換到yd25伺服器上。
    pcs cluster standby yd20
    將伺服器設定成備用節點時,服務就會切換走。
    2) 命令
    檢視叢集狀態:#pcs status
    檢視叢集當前配置:#pcs config
    開機後集群自啟動:#pcs cluster enable --all
    啟動叢集:#pcs cluster start --all
    停止叢集:#pcs cluster destroy --all
    檢視叢集資源狀態:#pcs resource show
    設定節點為備用狀態:#pcs cluster standby node1
    取消節點備用狀態:#pcs cluster unstandby node1