1. 程式人生 > >RHCS高可用叢集配置(luci+ricci+fence)

RHCS高可用叢集配置(luci+ricci+fence)

一 、關於RHCS

1. 什麼是RHCS

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

更確切的說,RHCS是一個功能完備的叢集應用解決方案,它從應用的前端訪問到後端的資料儲存都提供了一個行之有效的叢集架構實現,通過RHCS提供的這種解決方案,不但能保證前端應用持久、穩定的提供服務,同時也保證了後端資料儲存的安全。

 RHCS提供了集群系統中三種叢集構架,分別是高可用性叢集、負載均衡叢集、儲存叢集。

2. RHCS提供的三個核心功能

高可用叢集是RHCS的核心功能。當應用程式出現故障,或者系統硬體、網路出現故障時,應用可以通過RHCS提供的高可用性服務管理元件自動、快速從一個節點切換到另一個節點,節點故障轉移功能對客戶端來說是透明的,從而保證應用持續、不間斷的對外提供服務,這就是RHCS高可用叢集實現的功能。

RHCS通過LVS(Linux Virtual Server)來提供負載均衡叢集,而LVS是一個開源的、功能強大的基於IP的負載均衡技術,LVS由負載排程器和服務訪問節點組成,通過LVS的負載排程功能,可以將客戶端請求平均的分配到各個服務節點,同時,還可以定義多種負載分配策略,當一個請求進來時,集群系統根據排程演算法來判斷應該將請求分配到哪個服務節點,然後,由分配到的節點響應客戶端請求,同時,LVS還提供了服務節點故障轉移功能,也就是當某個服務節點不能提供服務時,LVS會自動遮蔽這個故障節點,接著將失敗節點從叢集中剔除,同時將新來此節點的請求平滑的轉移到其它正常節點上來;而當此故障節點恢復正常後,LVS又會自動將此節點加入到叢集中去。而這一系列切換動作,對使用者來說,都是透明的,通過故障轉移功能,保證了服務的不間斷、穩定執行。

    RHCS通過GFS檔案系統來提供儲存叢集功能,GFS是Global File System的縮寫,它允許多個服務同時去讀寫一個單一的共享檔案系統,儲存叢集通過將共享資料放到一個共享檔案系統中從而消除了在應用程式間同步資料的麻煩,GFS是一個分散式檔案系統,它通過鎖管理機制,來協調和管理多個服務節點對同一個檔案系統的讀寫操作。

3. RHCS叢集的組成

RHCS是一個叢集工具的集合,主要有下面幾大部分組成:

叢集構架管理器

這是RHCS叢集的一個基礎套件,提供一個叢集的基本功能,使各個節點組成叢集在一起工作,具體包含分散式叢集管理器(CMAN)、成員關係管理、鎖管理(DLM)、配置檔案管理(CCS)、柵裝置(FENCE)。

高可用服務管理器

提供節點服務監控和服務故障轉移功能,當一個節點服務出現故障時,將服務轉移到另一個健康節點。

實驗環境主機配置及功能:

server2 ip:172.6.6.20 安裝ricci(叢集節點)
server3 ip 172.6.6.30 安裝ricci(叢集節點) 和luci(叢集管理介面)

fence主機:雙ip(一個外網,一個172.6.6.6),apache服務用來掛載映象,安裝fence

二、建立叢集

1. yum源的配置

因為是附加元件所以可以直接從映象中獲得,本示例叢集的安裝從yum源進行,所以首先我們需要掛載一個映象(示例中rhel6.5的映象掛載在172.6.6.6的apache服務下)作為yum源
這裡寫圖片描述
上圖中標出部分即為高可用元件,然後根據需要我們來配置一下yum源:

cat /etc/yum.repo/yum.repo

[halo]
name=halo
baseurl=http://172.6.6.6/iso6
gpgcheck=0

[HighAvailability]
name=HighAvailability
baseurl=http://172.6.6.6/iso6/HighAvailability
gpgcheck=0

[LoadBalancer]
name=LoadBalancer
baseurl=http://172.6.6.6/iso6/LoadBalancer
gpgcheck=0

[ResilientStorage]
name=ResilientStorage
baseurl=http://172.6.6.6/iso6/ResilientStorage
gpgcheck=0

[ScalableFileSystem]
name=ScalableFileSystem
baseurl=http://172.6.6.6/iso6/ScalableFileSystem
gpgcheck=0

配置好yum源執行yum clean all清理快取,準備下一步的安裝過程了。

2. 安裝luci和ricci

luci的作用我們可以通過一句話來知曉(只是管理高可用的應用而已):

# luci    high availability management application

ricci的作用:

# description:  Starts and stops Red Hat Cluster and Storage Remote Configuration Interface (ricci)

直接yum安裝

#server3
yum install luci ricci -y

#server2
yum install ricci -y

安裝完成啟動服務(有必要進行開機自啟動的設定chkconfig service on),關閉防火牆(iptables -F)

server2和server3:
/etc/init.d/ricci start

server3:
/etc/init.d/luci start

注意要為ricci使用者新增密碼(兩臺都要做),這個等會建立叢集的時候需要對應起來

passwd ricci

3. 解析配置

兩臺ricci主機中做好解析:

vim /etc/hosts
新增以下內容:

172.6.6.20 server2
172.6.6.30 server3

4. 訪問測試

在server3中啟動luci服務的時候有提示:
在外部注意通過https://server3:8084進行訪問
那我們就訪問一下,因為是https訪問,所以需要新增信任網路,訪問到的結果如下:

這裡寫圖片描述

登入使用者為系統(luci所在主機,此例中為172.6.6.30)root,密碼為root使用者的密碼

5. 建立一個叢集

點選叢集管理(Manager Clusters),然後點選create出現以下頁面,根據實際情況填寫資訊即可(注意Ricci Hostname是做過解析的)
這裡寫圖片描述
add(新增一個已有的叢集) create(建立一個新的叢集) remove(移除已有叢集)

這裡寫圖片描述

只要server2和server3上的ricci服務正常啟動,並且網路正常連線,一般就會出現如下介面,這個時候server2和server3就會自動reboot,如果luci和ricci沒有設定開機自啟動的話需要手動啟動一下,這樣才能看到下一張圖片的內容
這裡寫圖片描述

叢集新增成功,這個時候在server2和server3中的/etc/cluster/cluster.conf檔案中就會有一些配置寫入

這裡寫圖片描述

如果已經建立了叢集,在我們刪掉叢集之後需要手動清除/etc/cluster/cluster.conf配置檔案,否則下次將節點加入叢集的時候會提示錯誤,注意如果叢集建立好了之後如果某些節點執行不正常,需要檢查的地方有:防火牆,相關服務是否啟動(ricci和cman),解析是否正確。。。
通過本地命令檢視叢集狀態:
這裡寫圖片描述

三、配置fence

通過柵裝置可以從叢集共享儲存中斷開一個節點,切斷I/O以保證資料的完整性。當CMAN確定一個節點失敗後,它在叢集結構中通告這個失敗的節點,fenced程序將失敗的節點隔離,以保證失敗節點不破壞共享資料。它可以避免因出現不可預知的情況而造成的“腦裂”(split-brain)現象。“腦裂”是指當兩個節點之間的心跳線中斷時,兩臺主機都無法獲取對方的資訊,此時兩臺主機都認為自己是主節點,於是對叢集資源(共享儲存,公共IP地址)進行爭用,搶奪。
Fence的工作原理是:當意外原因導致主機異常或宕機時,備用機會首先呼叫fence裝置,然後通過fence裝置將異常的主機重啟或從網路上隔離,釋放異常主機佔據的資源,當隔離操作成功後,返回資訊給備用機,備用機在接到資訊後,開始接管主機的服務和資源。
RHCS的Fence裝置可以分為兩種:內部Fence和外部Fence。內部fence有IBM RSAII卡,HP的ILO卡,以及IPMI裝置等;外部FENCE裝置有UPS,SAN switch ,Network switch等。


當節點A上的柵過程發現C節點失效時,它通過柵代理通知光纖通道交換機將C節點隔離,從而釋放佔用的共享儲存。
當A上的柵過程發現C節點失效時,它通過柵代理直接對伺服器做電源power on/off,而不是去執行作業系統的開關機指令。

1. 在fence主機上安裝fence

yum install fence-virtd.x86_64 fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64 -y

2. 執行fence配置

[[email protected] iso6]# systemctl start fence_virtd.service
[[email protected] iso6]# fence_virtd -c
#除了Interface [virbr0]:這一項要根據具體情況來修改之外其他基本都直接回車即可
Module search path [/usr/lib64/fence-virt]:

Available backends:
libvirt 0.1
Available listeners:
multicast 1.2

Listener modules are responsible for accepting requests
from fencing clients.

Listener module [multicast]:

The multicast listener module is designed for use environments
where the guests and hosts may communicate over a network using
multicast.

The multicast address is the address that a client will use to
send fencing requests to fence_virtd.

Multicast IP Address [225.0.0.12]:

Using ipv4 as family.

Multicast IP Port [1229]:

Setting a preferred interface causes fence_virtd to listen only
on that interface. Normally, it listens on all interfaces.
In environments where the virtual machines are using the host
machine as a gateway, this must be set (typically to virbr0).
Set to ‘none’ for no interface.

Interface [virbr0]:

The key file is the shared key information which is used to
authenticate fencing requests. The contents of this file must
be distributed to each physical host and virtual machine within
a cluster.

Key File [/etc/cluster/fence_xvm.key]:

Backend modules are responsible for routing requests to
the appropriate hypervisor or management layer.

Backend module [libvirt]:

Configuration complete.

=== Begin Configuration ===
backends {
libvirt {
uri = “qemu:///system”;
}

}

listeners {
multicast {
port = “1229”;
family = “ipv4”;
interface = “virbr0”;
address = “225.0.0.12”;
key_file = “/etc/cluster/fence_xvm.key”;
}

}

fence_virtd {
module_path = “/usr/lib64/fence-virt”;
backend = “libvirt”;
listener = “multicast”;
}

=== End Configuration ===
Replace /etc/fence_virt.conf with the above [y/N]? y
[[email protected] iso6]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000234745 s, 2.2 MB/s

#生成fence認證鑰匙並分發給節點
[[email protected] iso6]# scp /etc/cluster/fence_xvm.key [email protected]:/etc/cluster/
[email protected]’s password:
fence_xvm.key 100% 512 0.5KB/s 00:00
[[email protected] iso6]# scp /etc/cluster/fence_xvm.key [email protected]:/etc/cluster/
[email protected]’s password:
fence_xvm.key

3. 新增fence裝置

這裡寫圖片描述

fence新增成功提示
這裡寫圖片描述

成功之後兩個叢集節點的/etc/cluster/cluster.conf檔案中就會出現fence配置內容,如下:

[[email protected] ~]# cat /etc/cluster/cluster.conf 
<?xml version="1.0"?>
<cluster config_version="3" name="cluseter2-3">
    <clusternodes>
        <clusternode name="server2" nodeid="1"/>
        <clusternode name="server3" nodeid="2"/>
    </clusternodes>
    <cman expected_votes="1" two_node="1"/>
    <fencedevices>
        <fencedevice agent="fence_xvm" name="fence23"/>
    </fencedevices>
</cluster>
[[email protected] ~]# 

4. 繫結節點(兩個節點都要進行以下操作)

第一步add fence method,第二步add fence instance(需要填寫主機的uuid或者域名)
這裡寫圖片描述
這裡寫圖片描述

兩個節點都繫結後配置檔案內容應該如下:
[[email protected] ~]# cat /etc/cluster/cluster.conf

<?xml version="1.0"?>
<cluster config_version="17" name="cluseter2-3">
    <clusternodes>
        <clusternode name="server2" nodeid="1">
            <fence>
                <method name="fence2">
                    <device domain="564da0f9-987b-3d6e-4e78-49ecb06657d1" name="fence23"/>
                </method>
            </fence>
        </clusternode>
        <clusternode name="server3" nodeid="2">
            <fence>
                <method name="fence3">
                    <device domain="564db6d5-07a4-5f8e-eb0e-64f9eb10f48a" name="fence23"/>
                </method>
            </fence>
        </clusternode>
    </clusternodes>
    <cman expected_votes="1" two_node="1"/>
    <fencedevices>
        <fencedevice agent="fence_xvm" name="fence23"/>
    </fencedevices>
</cluster>

5. 測試

在server2上通過fence幹掉節點server3,使server3斷電

[[email protected] ~]# fence_node server3 
fence server3 success  

四、高可用服務配置

1.新增failover 域
這裡寫圖片描述

2.新增虛擬ip
這裡寫圖片描述

3. 新增可執行指令碼
這裡寫圖片描述

4.新增需要進行高可用的服務組到叢集
這裡寫圖片描述
依次為叢集服務新增虛擬IP和執行指令碼,如上2、3
5. 測試

clusvcadm -d apache ##關閉服務
clusvcadm -e apache ##開啟服務

五、 為叢集新增共享磁碟

1.配置共享磁碟
server1 172.6.6.10(新加一塊硬碟作為其他主機的共享磁碟,假定新增的磁碟為/dev/vdb)

yum install scsi-target-utils -y
vim /etc/tgt/targets.conf ##編輯磁碟共享配置檔案

<target iqn.2017-09.com.example:server.target1>
    backing-store /dev/vdb
    initiator-address 172.6.6.20
    initiator-address 172.6.6.30
    #只共享給server2和server3  
</target>

/etc/init.d/tgtd start
tgt-admin -s
##檢視共享

2.節點連線共享磁碟
server2
server3
同時安裝iscsi-initiator-utils

yum install  iscsi-initiator-utils -y

iscsiadm -m discovery -t st -p 172.6.6.10
iscsiadm -m node -l ##iscsi登陸

只在server2(或者server3)進行以下操作

fdisk -l ##檢視是否有/dev/sda
fdisk -cu /dev/sda ##對共享磁碟進行分割槽

##lvm建立

pvcreate /dev/sda1
vgcreate clustervg /dev/sda1
lvcreate -L +2G -n demo clustervg

操作完成在serve2和server3上檢視結果是否一致:

pvs && vgs && lvs

如果沒有同步,則執行partprobe然後再檢視,如果一致則進行以下操作:

mkfs.ext4 /dev/clustervg/demo ##格式化檔案系統
mount /dev/clustervg/demo /var/www/html/ ##掛載使用

相關推薦

RHCS可用叢集配置(luci+ricci+fence)

一 、關於RHCS 1. 什麼是RHCS RHCS是Red Hat Cluster Suite的縮寫,也就是紅帽子叢集套件,RHCS是一個能夠提供高可用性、高可靠性、負載均衡、儲存共享且經濟廉價的叢集工具集合,它將集群系統中三大叢集架構融合一體,可以給w

Hadoop(25)-可用叢集配置,HDFS-HA和YARN-HA

一. HA概述 1. 所謂HA(High Available),即高可用(7*24小時不中斷服務)。 2. 實現高可用最關鍵的策略是消除單點故障。HA嚴格來說應該分成各個元件的HA機制:HDFS的HA和YARN的HA。 3. Hadoop2.0之前,在HDFS叢集中NameNode存在單點故障(SPOF

基於zookeeper的Spark可用叢集配置

首先我們這裡配置的三臺機器的叢集 名稱分別為hadoop、hadoop1、hadoop2 首先是安裝Zookeeper:  (4)配置:進到conf目錄下,把zoo_sample.cfg修改成z

Hadoop 2.7.2 HA 自動切換可用叢集配置詳解

1、叢集節點規劃 NameNode node1 node2 DataNode node1 node2 node3 JournalNode node1 node2 node3 zookeeper node1 node2 node3 node1:172.16.73.143

Linux:RHCS可用負載均衡叢集riccilucifence

一·RHCS 1.RHCS是什麼 RHCS是Red Hat Cluster Suite的縮寫,也就是紅帽子叢集套件,RHCS是一個能夠提供高可用性、高可靠性、負載均衡、儲存共享且經濟廉價的叢集工具集合,它將集群系統中三大叢集架構融合一體,可以給web應

RHCS叢集套件——Luci/Ricci實現Web可用叢集

一、簡介 RHCS即 RedHat Cluster Suite ,中文意思即紅帽叢集套件,它是一套綜合的軟體元件,可以通過在部署時採用不同的配置,以滿足企業對高可用性,負載均衡,可擴充套件性,檔案共享和節約成本的需要。 它提供有如下兩種不同型別的叢集: 1、高

利用RHCS Nginx Fence實現可用叢集部署

叢集概念 HA(High Available)高可用叢集是減少服務中斷時間為目的的伺服器叢集技術,也是保證業務連續性的有效解決方案。叢集,一般有兩個或者兩個以上的計算機組成,這些組成叢集的計算機被稱為節點。 其中由兩個節點組成的叢集被稱為雙機熱備,即使用兩臺

Kubernetes實戰 可用叢集搭建,配置,運維與應用

1-1 K8S導學 1-2 搭建K8S叢集步驟和要點介紹 1-3 搭建三節點Ubuntu環境 1-4 安裝容器引擎 1-5 下載Kubeadm、node元件和命令列工具 1-6 向叢集中加入worker節點 1-7 安裝dashboard和heapste

FastDFS可用叢集架構配置搭建

  一、基本模組及高可用架構 FastDFS 是餘慶老師開發的一個開源的高效能分散式檔案系統(DFS)。 它的主要功能包括:檔案儲存,檔案同步和檔案訪問,以及高容量和負載平衡。 FastDFS 系統有三個角色:跟蹤伺服器(Tracker Server)、儲存伺服器(St

配置MySQL可用叢集MHA

配置MySQL高可用叢集+++++++++++++++++++主機角色 :客戶端 client50資料庫伺服器 mysql51 到 mysql55管理主機 mgm56VIP地址 192.168.4.100拓撲結構: client50 | mysql51主 |

corosync+pacemaker配置可用叢集

2018-03-02 18:50:21 一、環境介紹: Node1: CentOS6      192.168.9.168   192-168-9-168 CentOS6      192.168.9.176 &n

叢集概述、keepalived介紹、用keepalived配置可用叢集

根據功能劃分為兩大類:高可用和負載均衡 高可用叢集通常為兩臺伺服器,一臺工作,另外一臺作為冗餘,當提供服務的機器宕機,冗餘將接替繼續提供服務 實現高可用的開源軟體有:heartbeat、keepalived 負載均衡叢集,需要有一臺伺服器作為分發器,它負責把使用者的請求分發給

RabbitMQ可用叢集部署及配置+HAproxy負載(原始碼)

1.環境 rabbitmq-1 10.24.43.4 centos6.x rabbitmq-2 10.24.43.5 centos6.x 2.

利用RHCS套件實現nginx可用叢集

RHCS 簡介 RHCS即 RedHat Cluster Suite ,中文意思即紅帽叢集套件。 紅帽叢集套件(RedHat Cluter Suite, RHCS)是一套綜合的軟體元件,可以通過在部署時採用不同的配置,以滿足你的對高可用性,負載均衡,可擴充套件性,檔案共享和節約成本的

叢集介紹、keepalived介紹、用keepalived配置可用叢集、負載均衡叢集介紹、LVS介紹 、LVS排程演算法、LVS NAT模式搭建

一、叢集介紹 Linux叢集根據功能劃分為兩大類:高可用和負載均衡。 高可用叢集 高可用叢集通常為2臺伺服器,一臺工作,另一臺作為冗餘,當提供服務的機器宕機時,冗餘將接替繼續提供服務。 實現高可用的開源軟體有:heartbeat、Keepalived,其中hea

8節點(hadoop+yarn+hbase+storm+kafka+spark+zookeeper)可用叢集詳細配置

配置 hadoop+yarn+hbase+storm+kafka+spark+zookeeper 高可用叢集,同時安裝相關組建:JDK,MySQL,Hive,Flume 環境介紹 節點介紹 虛擬機器數量:8 臺 作業系統版本:CentOS-7-x8

RabbitMQ 高階指南:從配置、使用到可用叢集搭建

博主說:在專案中,通過 RabbitMQ,咱們可以將一些無需即時返回且耗時的操作提取出來,進行非同步處理,而這種非同步處理的方式大大的節省了伺服器的請求響應時間,從而提高了系統的吞吐量。 正文 1 RabbitMQ 簡介 1.1 介紹   RabbitMQ

postgresql使用RHCS套件搭建HA可用叢集

環境: 資料庫伺服器 2臺 伺服器一 作業系統:CentOS 6.8 x86_64 IP(eth0):192.168.11.61 主機名:node1 伺服器二 作業系統:CentOS 6.8 x86_64 IP_1(eth0):192.168.11.62 主機名:node2

Redis可用叢集-哨兵模式(Redis-Sentinel)搭建配置教程【Windows環境】

No cross,no crown . 不經歷風雨,怎麼見彩虹。 Redis哨兵模式,用現在流行的話可以說就是一個“哨兵機器人”,給“哨兵機器人”進行相應的配置之後,這個”機器人”可以7*24小時工作,它能能夠自動幫助你做一些事情,如監控,提醒,自動處

Spring Cloud | 第七篇: Eureka叢集可用配置

       一直在網上查閱資料,配置高可用的叢集,看完了發現還是不明白,或者按照文章的內容一步一步去實現發現根本實現不了,真的很懷疑他們寫的時候是否真的自己測試過了還是大家都是轉發來轉發去的,自己弄了好久,發現沒有一個拿來就可以用的,並且裡面很多的東西也沒有講解清楚,於是打