Phần 1: Cài đặt và cấu hình Pacemaker và Corosync Chuẩn bị
- Mỗi máy gắn 1 harddisk 5G ( đồng bộ database) - Cấu hình địa chỉ IP
node1.nhatnghe1.com [ens33:192.168.1.11] [ens34:172.16.1.1] node2.nhatnghe1.com [ens33:192.168.1.12] [ens34:172.16.1.2]
- Trong file /etc/hosts , bổ sung thêm tên hostname và địa chỉ IP để hai nút có thể giao tiếp được với nhau.
192.168.1.11 node1.nhatnghe1.com node1 192.168.1.12 node2.nhatnghe1.com node2
b1: Cài đặt Pacemaker và Corosync
# yum install -y pacemaker pcs fence-agents-all psmisc policycoreutils-python Hặc cài từ thư mục pacemaker
b2: Cấu hình Cluster với Pacemaker và Corosync
Active 192.168.1.11 192.168.1.13 ` Web 192.168.1.12 Passive hear tbeat Vi p: 192. 168. 1. 15
Trên cả 2 node, chúng ta đặt password cho user hacluster để xác thực với nhau, 2
mật khẩu phải trùng khớp
# echo "123456" | passwd --stdin hacluster # systemctl start pcsd
# systemctl enable pcsd Tại Node1:
# pcs cluster auth node1.nhatnghe1.com node2.nhatnghe1.com -u hacluster -p 123456 node2.nhatnghe1.com: Authorized
node1.nhatnghe1.com: Authorized
Sau khi xác thực, chúng ta tạo 1 cluster trên node1 có tên là nncluster để chúng có
thể tạo và đồng bộ các file cấu hình với nhau.
# pcs cluster setup --name nncluster node1.nhatnghe1.com node2.nhatnghe1.com
Khởi động và kích hoạt cluster mới tạo trên node 1 bằng lệnh:
# pcs cluster start --all # pcs cluster enable --all
node1.nhatnghe1.com: Starting Cluster... node2.nhatnghe1.com: Starting Cluster...
Xem lại trạng thái của cluster trên các node:
# pcs status # pcs status
Cluster name: nncluster
WARNING: no stonith devices and stonith-enabled is not false Stack: unknown
Current DC: NONE
Last updated: Mon Jan 22 12:15:11 2018
Last change: Mon Jan 22 12:14:54 2018 by hacluster via crmd on node1.nhatnghe1.com 2 nodes configured
0 resources configured
Node node1.nhatnghe1.com: UNCLEAN (offline) Node node2.nhatnghe1.com: UNCLEAN (offline) node1.nhatnghe1.com: Stopping Cluster (pacemaker)... node2.nhatnghe1.com: Stopping Cluster (pacemaker)... node1.nhatnghe1.com: Successfully destroyed cluster node2.nhatnghe1.com: Successfully destroyed cluster
Sending 'pacemaker_remote authkey' to 'node1.nhatnghe1.com', 'node2.nhatnghe1.com' node2.nhatnghe1.com: successful distribution of the file 'pacemaker_remote authkey' node1.nhatnghe1.com: successful distribution of the file 'pacemaker_remote authkey' Sending cluster config files to the nodes...
node1.nhatnghe1.com: Succeeded node2.nhatnghe1.com: Succeeded
Synchronizing pcsd certificates on nodes node1.nhatnghe1.com, node2.nhatnghe1.com... node2.nhatnghe1.com: Success
node1.nhatnghe1.com: Success
Restarting pcsd on the nodes in order to reload the certificates... node2.nhatnghe1.com: Success
# pcs status cluster
Node1:
Tắt Quorum và STONITH, cho các tài nguyên hoạt động trên cùng 1 node Disable STONITH (Shoot The Other Node In The Head) option on here
# pcs property set stonith-enabled=false
Change to "ignore", it does not need for 2 nodes cluster
# pcs property set no-quorum-policy=ignore
Disable auto failbask
# pcs property set default-resource-stickiness="INFINITY"
show settings
B3: Tổ chuc phân khu đĩa
fdisk /dev/sdb
Tạo logical volume (5gb dùng chứa database đồng bộ giữa 2 node) /dev/sdb5 B4: Cài và Cấu hình drbd No resources Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled Cluster Status: Stack: corosync
Current DC: node1.nhatnghe1.com (version 1.1.16-12.el7_4.4-94ff4df) - partition with quorum
Last updated: Tue Nov 28 10:03:45 2017
Last change: Tue Nov 28 10:01:16 2017 by hacluster via crmd on node1.nhatnghe1.com 2 nodes configured 0 resources configured PCSD Status: node1.nhatnghe1.com: Online node2.nhatnghe1.com: Online # pcs property list Cluster Properties: cluster-infrastructure: corosync cluster-name: nncluster dc-version: 1.1.16-12.el7_4.4-94ff4df default-resource-stickiness: INFINITY have-watchdog: false no-quorum-policy: ignore stonith-enabled: false
Trên 2 node thực hiện các bước sau: Cài gói drbd84-utils-9.1.0-1.el7.elrepo.x86_64.rpm kmod-drbd84-8.4.10-1_2.el7_4.elrepo.x86_64.rpm Nạp module và reboot # modprobe drbd Kiểm tra # lsmod | grep drbd Tạo mới file
# vi /etc/drbd.d/testdata1.res
Chú ý: 2 máy đồng bộ thời gian
Khởi tạo DRBD metadata trên cả 2 node # drbdadm create-md testdata1 Trên 2 node bây giờ đã có DRBD metadata # systemctl start drbd
# systemctl enable drbd Xem thông tin bằng lệnh
Quan sát sẽ thấy cả 2 node là secondary,
B5. Chạy lệnh sau trên node1 để gán node này là master: # drbdadm primary testdata1 --force
# drbd-overview resource testdata1 { protocol C; on node1.nhatnghe1.com { device /dev/drbd0; disk /dev/sdb5; address 10.0.0.1:7788; meta-disk internal; } on node2.nhatnghe1.com { device /dev/drbd0; disk /dev/sdb5; address 10.0.0.2:7788; meta-disk internal; } } # drbd-overview
NOTE: drbd-overview will be deprecated soon. Please consider using drbdtop.
Trên cả 2 node, kiểm tra lại: #drbd-overview
Đợi q trình đồng bộ thành cơng Tại node2:
First you should umount drbd device if you can:
B6. Cài các gói:
mariadb mariadb-server
B7.Định dạng và mount (chỉ làm tại node1) Node1:
#mkfs.ext3 /dev/drbd0
#mount /dev/drbd0 /var/lib/mysql/ ; ko phải tạo mount trong /etc/fstab, Mounted point sẽ tự động dược tạo
#df -h /var/lib/mysql # drbd-overview
NOTE: drbd-overview will be deprecated soon. Please consider using drbdtop.
0:testdata1/0 SyncSource Primary/Secondary UpToDate/Inconsistent [=> ................. ] sync'ed: 13.7% (4420/5116)M
# drbd-overview
NOTE: drbd-overview will be deprecated soon. Please consider using drbdtop.
0:testdata1/0 Connected Secondary/Primary UpToDate/UpToDate
Mater:
drbdadm ---- overwrite-data-of-peer primary testdata1 drbdadm connect all
drbd-overview slave:
drbdadm ---- discard-my-data connect all drbd-overview
[root@node1 ~]# df -h /var/lib/mysql
Filesystem Size Used Avail Use% Mounted on /dev/drbd0 ext3 4.8G 11M 4.6G 1% /var/lib/mysql [root@node1 ~]#
B8. Tạo cluster resource và đặt các thuộc tính Tại node1
Set virtual IP address
# pcs resource create VirtIP ocf:heartbeat:IPaddr2 ip=192.168.100.103 cidr_netmask=32 op monitor interval=30
Add resource - Tạo tài nguyên Mariadb cho cluster
# pcs resource create Mariadb systemd:mariadb op monitor interval=5s
Show status
Set that Mariadb and Virtual_IP are always on a same node
# pcs constraint colocation add Mariadb with VirtIP INFINITY
set that the order of starting is Virtual_IP ⇒ Mariadb # pcs constraint order VirtIP then Mariadb
#show status
Node1, 2: #ip add
# systemctl status mariadb
Sẽ thấy ip 192.168.100.103 và mariadb sẽ được đặt trên 1 node Reboot node1, node2
192.168.100.103 và mariadb sẽ được đặt trên node1
B9 Configure the Cluster for the DRBD device Please consider using drbdtop.
0:testdata1/0 Connected Primary/Secondary UpToDate/UpToDate /var/lib/mysql ext3 4.8G 11M 4.6G 1%
# pcs status resources
Mariadb (systemd:mariadb):
VirtIP (ocf::heartbeat:IPaddr2): Started node1.nhatnghe1.com Started node1.nhatnghe1.com
Master/Slave Set: DrbdDataClone [DrbdData] Masters: [ node1.nhatnghe1.com ]
Slaves: [ node2.nhatnghe1.com ]
Adding VirtIP Mariadb (kind: Mandatory) (Options: first-action=start then-action=start)
# pcs constraint Location Constraints: Ordering Constraints:
start VirtIP then start Mariadb (kind:Mandatory) Colocation Constraints:
Mariadb with VirtIP (score:INFINITY)
Tại node1, tạo resource:
One handy feature pcs has is the ability to queue up several changes into a file and commit those changes all at once. To do this, start by populating the file with the current raw XML config from the CIB.
Commit them all at once by pushing the drbd_cfg file into the live CIB
# pcs cluster cib drbd_cfg
Using the pcs -f option, make changes to the configuration saved in the drbd_cfg file. These changes will not be seen by the cluster until the drbd_cfg file is pushed into the live cluster’s CIB later.
Here, we create a cluster resource for the DRBD device
# pcs -f drbd_cfg resource create DrbdData ocf:linbit:drbd drbd_resource=testdata1 op
monitor interval=60s
And additional clone resource to allow the resource to run on both nodes at the same time.
# pcs -f drbd_cfg resource master DrbdDataClone DrbdData master-max=1 master- node-max=1 clone-max=2 clone-node-max=1 notify=true
# pcs -f drbd_cfg resource show
After you are satisfied with all the changes, you can commit them all at once by pushing the drbd_cfg file into the live CIB.
#pcs cluster cib-push drbd_cfg
Let’s see what the cluster did with the new configuration:
[root@node1 ~]# pcs status Cluster name: nncluster Stack: corosync
Current DC: node1.nhatnghe1.com (version 1.1.16-12.el7_4.4-94ff4df) - partition with quorum
Last updated: Mon Jan 22 09:57:31 2018
Last change: Mon Jan 22 09:57:21 2018 by root via cibadmin on node1.nhatnghe1.com