常用命令:
修改虛擬IP
pcs resource update virtual_ip ip=10.16.10.200
重啟節點服務
#重啟節點的ClusterIP服務
pcs resource cleanup ClusterIP
#重啟節點所有的服務
pcs resource cleanup
兩台都在online狀態時,服務運行在node1服務器上,想切換到node2服務器上
pcs cluster standby node1
將node1再次激活
pcs cluster unstandby node1
常用命令:
查看集群狀態:#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
(pcs resource create umail_data ocf:heartbeat:Filesystem device="/dev/mapper/umail_vg-umail_lv" directory="/umaildata" fstype="xfs")
----------------------------------------------------------------------------------------------------------
1. 安裝常見的習慣用的包(node1、node2)
yum install vim wget tmux lrzsz unzip -y
2. 配置服務器hosts記錄
環境:(node1、node2)
192.168.1.181 drbd1.cspcs.com node1
192.168.1.216 drbd2.cspcs.com node2
(切記需要注意使用hostname的時候,需要直接顯示的主機名)
(相關的環境記得改成自已的,歡迎踩到坑里)
127.0.0.1 localhost
drbd1.cspcs.com localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.181 drbd1.cspcs.com node1
192.168.1.216 drbd2.cspcs.com node2
# Created by anaconda
NETWORKING=yes
HOSTNAME=drbd1.cspcs.com
node1

node2

3、關閉iptables和SELINUX,避免安裝過程中報錯,部署完成后可以再開啟(node1,node2)
# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
# vi /etc/selinux/config
---------------
SELINUX=disabled
---------------
(node1,node2)
reboot
4、創建LVM步驟 (node1,node2) LVM
fdisk /dev/sdb
pvdisplay
pvcreate /dev/sdb1
vgcreate umail_vg /dev/sdb1
vgdisplay
lvcreate -l 4095 -n umail_lv umail_vg





5、時間同步(node1,node2)
# yum install -y rdate
# rdate -s
time-b.nist.gov
6、(DRBD安裝)(node1,node2)
3、由於編譯安裝沒成功,所以選擇yum方式安裝(node1,node2)
# rpm --import
https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# yum install -y kmod-drbd84 drbd84-utils
# systemctl enable drbd
4、配置文件介紹
# /etc/drbd.conf #主配置文件
# /etc/drbd.d/global_common.conf #全局配置文件
5、加載DRBD模塊、查看DRBD模塊是否加載到內核:(node1,node2)
# modprobe drbd
# lsmod |grep drbd
drbd 397041 0
libcrc32c 12644 2 xfs,drbd
如果加載DRBD模塊報下面的錯誤:
# modprobe drbd
FATAL: Module drbd not found.
備注:由於在安裝依賴包的時候,已經安裝kernel,所以一般情況下不會出現下面的錯誤。如果出現了可以先嘗試重啟看下,如果重啟后還是不行,就按照下面的方法操作:
原因:這個報錯是因為內核並不支持此模塊,所以需要更新內核,
更新內核的方法是:yum install kernel(備注:如果沒報錯不建議更新)
更新后,記得一定要重新啟動操作系統!!!
重啟系統后再次使用命令查看,此時的內核版本變為
# uname -r
此時再次嘗試加載模塊drbd
# modprobe drbd
參數配置:(node1,node2)
# vi /etc/drbd.d/db.res
resource r0{
protocol C;
startup { wfc-timeout 0; degr-wfc-timeout 120;}
disk { on-io-error detach;}
net{
timeout 60;
connect-int 10;
ping-int 10;
max-buffers 2048;
max-epoch-size 2048;
}
syncer { rate 200M;}
on
drbd1.cspcs.com{
device /dev/drbd0;
disk /dev/mapper/umail_vg-umail_lv;
address
192.168.1.181:7788;
meta-disk internal;
}
on
drbd2.cspcs.com{
device /dev/drbd0;
disk /dev/mapper/umail_vg-umail_lv;
address
192.168.1.216:7788;
meta-disk internal;
}
}

(使用drbdadm create-md r0這個步驟的的時候,如果提示如下報錯,可以使用
dd if=/dev/zero of=/dev/mapper/umail_vg-umail_lv bs=1M count=1)


======================================================================



將drbd1.cspcs.com主機配置為主節點:(node1,
注意只有node1,這步一定要等待顯示下面的狀態后才能執行下一步)
此步驟可以使用cat /proc/drbd進行查看硬盤同步的狀態。

drbdsetup /dev/drbd0 primary --force


【node1、node2】
mkdir /store
【node1】
mkfs.xfs /dev/drbd0
mount /dev/drbd0 /store
df -h
umount /store/
df -h
drbdadm secondary r0
cat /proc/drbd


7、測試故障轉移(drbd故障轉移)

【node2】
mkdir /store
cat /proc/drb
drbdadm primary r0
mount /dev/drbd0 /store
cat /proc/drbd

8、安裝PCS套件(node1,node2)
# yum install corosync pcs pacemaker -y
#在上一步yum安裝的時候,會創建
hacluster用戶,與pcs一起用於配置集群節點
#修改兩台服務器上面
hacluster 賬號的密碼
# echo "
password" | passwd --stdin hacluster
#分別在兩台服務器上面啟動pcsd服務
#systemctl start pcsd
以下開始,可以只要在(node1)上面操作
#授權集群節點,讓節點間可以正常通訊
#pcs cluster auth node1 node2

#添加集群節點成員,創建一個名為cluster_umail的集群,並把 node1與node2添加為成員
#pcs cluster setup --name cluster_umail node1 node2 --force

#
啟動集群節點,下面的命令成功啟動后,corosync和pacemaker守護進程會一同被啟動,可以通過systemctl status corosync和systemctl status pacemaker觀察
(#pcs cluster start node1 啟動某個節點)
#pcs cluster start --all

啟動后檢測群集的狀態:
#pcs status cluster

檢查集群中節點的狀態:
#pcs status nodes
#corosync-cmapctl |grep members
#pcs status corosync

---------------------------
群集配置
檢查配置是否還有錯誤:
#pcs status corosync
#crm_verify -L -V
#pcs property set stonith-enabled=false
#crm_verify -L -V
#pcs property set no-quorum-policy=ignore
#pcs property
[root@mail1 ~]# 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
Errors found during check: config not valid
[root@mail1 ~]#

創建虛擬IP與查看虛擬IP地址狀態
#pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=192.168.1.191 cidr_netmask=32 op monitor interval=30s
#pcs status resources
#ip addr

#pcs status 查看虛擬IP的狀態,pcs cluster stop停止一邊的集群,看一下虛擬IP是否有轉移到另外一台

在另外一台使用pcs status查看虛擬IP是否轉移過來了


添加drbd資源至集群中、掛載,並且添加關聯約束
[root@drbd1 ~]# pcs cluster cib add_drbd
[root@drbd1 ~]# ls -al add_drbd
-rw-r--r-- 1 root root 4083 Dec 12 21:11 add_drbd
[root@drbd1 ~]# pcs -f add_drbd resource create umaildata ocf:linbit:drbd drbd_resource=r0 op monitor interval=60s
[root@drbd1 ~]# pcs -f add_drbd resource master umaildata_sync umaildata master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
[root@drbd1 ~]# pcs -f add_drbd resource show
virtual_ip (ocf::heartbeat:IPaddr2): Started node1
Master/Slave Set: umaildata_sync [umaildata]
Stopped: [ node1 node2 ]
[root@drbd1 ~]# pcs status
Cluster name: cluster_umail
Stack: corosync
Current DC: node1 (version 1.1.19-8.el7_6.1-c3c624ea3d) - partition with quorum
Last updated: Wed Dec 12 21:16:41 2018
Last change: Wed Dec 12 21:07:26 2018 by root via cibadmin on node1
2 nodes configured
1 resource configured
Online: [ node1 node2 ]
Full list of resources:
virtual_ip (ocf::heartbeat:IPaddr2): Started node1
Daemon Status:
corosync: active/disabled
pacemaker: active/disabled
pcsd: active/disabled
[root@drbd1 ~]# pcs -f add_drbd resource show
virtual_ip (ocf::heartbeat:IPaddr2): Started node1
Master/Slave Set: umaildata_sync [umaildata]
Stopped: [ node1 node2 ]
[root@drbd1 ~]# pcs cluster cib-push add_drbd
CIB updated
[root@drbd1 ~]#

pcs cluster cib add_fs
pcs -f add_fs resource create umail_fs Filesystem device="/dev/drbd0" directory="/store" fstype="xfs"
pcs -f add_fs constraint colocation add umail_fs umaildata_sync INFINITY with-rsc-role=Master
df -h

pcs -f add_fs constraint order promote umaildata_sync then start umail_fs
pcs -f add_fs constraint colocation add virtual_ip umail_fs INFINITY
#以下步驟先啟動umail_fs,然后再啟動virtual_ip
pcs -f add_fs constraint order umail_fs then virtual_ip
pcs cluster cib-push add_fs
ip addr
#先使用pcs status查看一下現在是掛載在那台,然后使用pcs cluster stop將其停止一下,然后看一下是否切換到另外一台上面,然后再使用pcs cluster start 將其啟動
pcs status
pcs cluster stop
pcs cluster start
##############################################################
#配置pcs,並且添加虛擬Ip與drbd資源,相關的歷史命令
##############################################################
yum install corosync pcs pacemaker -y
echo "password" | passwd --stdin hacluster
systemctl start pcsd
pcs cluster auth node1 node2
pcs cluster setup --name cluster_umail node1 node2 --force
pcs cluster start --all
pcs status cluster
pcs status nodes
pcs status
corosync-cmapctl |grep 'members'
pcs status corosync
crm_verify -L -V
pcs property set stonith-enabled=false
crm_verify -L -V
pcs property set no-quorum-policy=ignore
pcs property
pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=192.168.1.191
pcs status
pcs cluster stop
pcs cluster start
pcs status
pcs cluster cib add_drbd
ls -al add_drbd
pcs -f add_drbd resource create umaildata ocf:linbit:drbd drbd_resource=r0 op monitor interval=60s
pcs -f add_drbd resource master umaildata_sync umaildata master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
pcs -f add_drbd resource show
pcs cluster cib add_fs
pcs cluster cib-push add_drbd
pcs status
#以下步驟為將drbd的設備進行掛載,並且添加關聯約束
pcs cluster cib add_fs
pcs -f add_fs resource create umail_fs Filesystem device="/dev/drbd0" directory="/store" fstype="xfs"
pcs -f add_fs constraint colocation add umail_fs umaildata_sync INFINITY with-rsc-role=Master
df -h
pcs -f add_fs constraint order promote umaildata_sync then start umail_fs
pcs -f add_fs constraint colocation add virtual_ip umail_fs INFINITY
#以下步驟先啟動umail_fs,然后再啟動virtual_ip
pcs -f add_fs constraint order umail_fs then virtual_ip
pcs cluster cib-push add_fs
ip addr
#先使用pcs status查看一下現在是掛載在那台,然后使用pcs cluster stop將其停止一下,然后看一下是否切換到另外一台上面,然后再使用pcs cluster start 將其啟動
pcs status
pcs cluster stop
pcs cluster start
##############################################################
9、umail目錄配置
分別在兩台服務器上面安裝一下U-Mail,並且更新至最新版本一下
1、在
node1進行以下操作(先把/store目錄掛載到node1)
# 移動目錄到 /
store 目錄
mv
/usr/local/u-mail/data/mailbox /store
mv /usr/local/u-mail/data/backup /
store <默認沒有此目錄,可以跳過>
mv /usr/local/u-mail/data/www/webmail/attachment /
store
mv /usr/local/u-mail/data/www/webmail/netdisk /
store
mv /usr/local/u-mail/data/mysql/default/umail /
store
mv /usr/local/u-mail/data/mysql/default/ibdata1 /
store
mv /usr/local/u-mail/data/mysql/default/ib_logfile0 /store
mv /usr/local/u-mail/data/mysql/default/ib_logfile1 /store
# 建立軟鏈接
ln -s /
store/mailbox /usr/local/u-mail/data/mailbox
ln -s /
store/backup /usr/local/u-mail/data/backup <默認沒有此目錄,可以跳過>
ln -s /
store/attachment /usr/local/u-mail/data/www/webmail/attachment
ln -s /
store/netdisk /usr/local/u-mail/data/www/webmail/netdisk
ln -s /
store/umail /usr/local/u-mail/data/mysql/default/umail
ln -s /
store/ibdata1 /usr/local/u-mail/data/mysql/default/ibdata1
ln -s /
store/ib_logfile0 /usr/local/u-mail/data/mysql/default/ib_logfile0
ln -s /
store/ib_logfile1 /usr/local/u-mail/data/mysql/default/ib_logfile1
# 更正權限
chown -R umail.root
/usr/local/u-mail/data/mailbox/
chown -R umail.umail /usr/local/u-mail/data/backup/ <默認沒有此目錄,可以跳過>
chown -R umail_apache.umail_apache /usr/local/u-mail/data/www/webmail/attachment/
chown -R umail_apache.umail_apache /usr/local/u-mail/data/www/webmail/netdisk/
chown -R umail_mysql.umail_mysql /usr/local/u-mail/data/mysql/default/umail
chown -R umail_mysql.umail_mysql /usr/local/u-mail/data/mysql/default/ibdata1
chown -R umail_mysql.umail_mysql /usr/local/u-mail/data/mysql/default/ib_logfile0
chown -R umail_mysql.umail_mysql /usr/local/u-mail/data/mysql/default/ib_logfile1
2、在
node2上面進行以下操作(把/store目錄掛載到node2)
# 修改原來的內容
mv
/usr/local/u-mail/data/mailbox{,_bak}
mv /usr/local/u-mail/data/backup{,_bak} <默認沒有此目錄,可以跳過>
mv /usr/local/u-mail/data/www/webmail/attachment{,_bak}
mv /usr/local/u-mail/data/www/webmail/netdisk{,_bak}
mv /usr/local/u-mail/data/mysql/default/umail{,_bak}
mv /usr/local/u-mail/data/mysql/default/ibdata1{,_bak}
mv /usr/local/u-mail/data/mysql/default/
ib_logfile0{,_bak}
mv /usr/local/u-mail/data/mysql/default/
ib_logfile1{,_bak}
# 建立軟鏈接
ln -s /
store/mailbox /usr/local/u-mail/data/mailbox
ln -s /
store/backup /usr/local/u-mail/data/backup <默認沒有此目錄,可以跳過>
ln -s /
store/attachment /usr/local/u-mail/data/www/webmail/attachment
ln -s /
store/netdisk /usr/local/u-mail/data/www/webmail/netdisk
ln -s /
store/umail /usr/local/u-mail/data/mysql/default/umail
ln -s /
store/ibdata1 /usr/local/u-mail/data/mysql/default/ibdata1
ln -s /
store/ib_logfile0 /usr/local/u-mail/data/mysql/default/ib_logfile0
ln -s /
store/ib_logfile1 /usr/local/u-mail/data/mysql/default/ib_logfile1
10、添加U-Mail服務至集群中
#添加umail_mysqld服務
pcs resource create umail_mysqld_server service:umail_mysqld op monitor interval="30" timeout="60" op start interval="0" timeout="60" op stop interval="0" timeout="60" meta target-role="Started"
#添加umail_nginx服務
pcs resource create umail_nginx_server service:umail_nginx op monitor interval="30" timeout="60" op start interval="0" timeout="60" op stop interval="0" timeout="60" meta target-role="Started"
#添加umail_apache服務
pcs resource create umail_apache_server service:umail_apache op monitor interval="30" timeout="60" op start interval="0" timeout="60" op stop interval="0" timeout="60" meta target-role="Started"
#添加umail_postfix服務
pcs resource create umail_postfix_server service:umail_postfix op monitor interval="30" timeout="60" op start interval="0" timeout="60" op stop interval="0" timeout="60" meta target-role="Started"
#添加啟動節點約束:umail_nginx_server、umail_apache_server、umail_postfix_server 、umail_mysqld_server 啟動的節點必須是 umail_fs 的節點
pcs constraint colocation add umail_nginx_server with umail_fs
pcs constraint colocation add umail_apache_server with umail_fs
pcs constraint colocation add umail_postfix_server with umail_fs
pcs constraint colocation add umail_mysqld_server with umail_fs
#添加order約束,先啟動umail_fs,然后再啟動 umail_mysqld_server
pcs constraint order umail_fs then umail_mysqld_server
11、設置開機啟動項(node1、node2)

systemctl enable pcsd
systemctl enable corosync
systemctl enable pacemaker
vim /usr/lib/systemd/system/corosync.service
在第8行下面添加:
ExecStartPre=/usr/bin/sleep 10
#重新加載systemd守護程序
systemctl daemon-reload
cat /usr/lib/systemd/system/corosync.service
12、自行重啟測試
祝君好運
------------------------------------------------------------------------------------------------------------------------
附(馬總寫的):DRBD常見維護
一、服務器維護建議:
1、不要同時重啟兩台服務器,否則可能會爭奪資源(術語叫做腦裂),建議間隔5分鍾左右。
2、不要同時開機兩台服務器,否則可能會爭奪資源(術語叫做腦裂),建議間隔5分鍾左右。
3、當前心跳線是10.0.100.0網段的,建議后期在兩台服務器上各加一個網卡,用網線直接將兩台服務器相連(IP配置成另外一個網段)。這樣可以避免由於您10.0.100.0網段出現故障造成爭奪資源(術語叫做腦裂)。
二、升級注意:
1、如果將一台服務器升級到最新版本了,需要切換到另外一台也升級到最新版本。
三、怎么確認同步是否有問題:
最基本的方法,在兩台服務器上運行df –h命令查看存儲掛載情況:
正常情況:一台服務器掛載了(紅框圈中的分區),另外一台服務器沒掛載,並且兩邊drbd都是啟動的,並且cat /proc/drbd狀態正常。
不正常情況1:如果兩台服務器都掛載了(紅框圈中的分區),表示不正常,即發生了腦裂。這時候請聯系技術支持解決。
不正常情況2:一台服務器掛載了(紅框圈中的分區),另外一台服務器沒掛載,但是drdb服務停止狀態,並且cat /proc/drbd狀態不正常。
不正常情況下drbd狀態一般為:
(1). 其中兩個個節點的連接狀態為 StandAlone
(2). 其中一個節點的連接狀態為 WFConnection,另一個問題StandAlone
查看主備服務器DRBD狀態:
/etc/init.d/drbd status
或
cat /proc/drbd
四、DRBD同步異常的原因:
(1). 采用HA環境的時候自動切換導致腦裂;
(2). 人為操作或配置失誤,導致產生的腦裂;
(3). 經驗有限,慚愧的很,只碰到以上2中產生腦裂的原因。
(4). drbd服務停止了
五、解決方法:
一般問題狀態可能是這樣的:
備機(hlt1):
[root@hlt1 ~]# service drbd status
drbd driver loaded OK; device status:
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@hlt1.holitech.net, 2016-10-31 10:43:50
m:res cs ro ds p mounted fstype
0:r0 WFConnection Secondary/Unknown UpToDate/DUnknown C
[root@hlt1 ~]# cat /proc/drbd
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@hlt1.holitech.net, 2016-10-31 10:43:50
0: cs:WFConnection ro:Secondary/Unknown ds:UpToDate/DUnknown C r-----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:383860
主機(hlt2):
[root@hlt2 ~]# cat /proc/drbd
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@hlt2.holitech.net, 2016-10-31 10:49:30
0: cs:StandAlone ro:Primary/Unknown ds:UpToDate/DUnknown r-----
ns:0 nr:0 dw:987208 dr:3426933 al:1388 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:1380568204
[root@hlt2 ~]# service drbd status
drbd driver loaded OK; device status:
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@hlt2.holitech.net, 2016-10-31 10:49:30
m:res cs ro ds p mounted fstype
0:r0 StandAlone Primary/Unknown UpToDate/DUnknown r----- ext4
1、在備服務器操作:其中example(比如r0)是資源名。
[root@hlt1 ~]# drbdadm secondary r0
[root@hlt1 ~]# drbdadm --discard-my-data connect r0 (如果返回錯誤信息,就多執行一次)
2、在主服務器操作:
[root@hlt2 ~]# drbdadm connect r0
[root@hlt2 ~]# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 599f286440bd633d15d5ff985204aff4bccffadd build by root@master.luodi.com, 2013-11-03 00:03:40
1: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
ns:6852 nr:0 dw:264460 dr:8393508 al:39 bm:512 lo:0 pe:2 ua:0 ap:0 ep:1 wo:d oos:257728
[>....................] sync'ed: 4.7% (257728/264412)K
finish: 0:03:47 speed: 1,112 (1,112) K/sec
3、備主機上查看:DRBD恢復正常:
備服務器:
[root@hlt1 ~]# cat /proc/drbd
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@hlt1.holitech.net, 2016-10-31 10:43:50
0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
ns:0 nr:1455736720 dw:1455736720 dr:0 al:0 bm:140049 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
主服務器:
[root@hlt2 ~]# cat /proc/drbd
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@hlt2.holitech.net, 2016-10-31 10:49:30
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
ns:1455737960 nr:0 dw:85995012 dr:1403665281 al:113720 bm:139737 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
如果出現下列錯誤:
‘r0‘ not defined in your config (for this host).檢查是否設置hosts文件和配置文件主機名是否一致
Exclusive open failed. Do it anyways 檢查是否已經打開drbd服務,先關閉
DRBD日常管理: