Sep 202014
1. Mô hình
Các bước cài đặt HA và LVS cho các máy chủ Load balancing và database
* heartbeat
o heartbeat-pils
o heartbeat-stonith
* heartbeat-ldirectord
o ipvsadm
o perl-MailTools
+ perl-TimeDate
o perl-Net-IMAP-Simple
o perl-Net-IMAP-Simple-SSL
+ perl-IO-Socket-SSL
# perl-Net-SSLeay
o perl-Mail-POP3Client
o perl-Mail-IMAPClient
o perl-Authen-Radius
+ perl-Data-HexDump
Cấu hình load balancing
Cấu hình load blance bằng LVS / NAT
- Cho phép IP fowarding
# echo “1” > /proc/sys/net/ipv4/ip_forward
- Tạo virtual service cho LV server (qua phương thức round robin )
# ipvsadm -A -t 172.16.0.1:http -s rr
- Đối với dịch dịch vụ virtual trên , dùng các lệnh sau để cấu hình cho realserver
# ipvsadm -a -t 172.16.0.1:http -r 10.0.0.101:http -m
# ipvsadm -a -t 172.16.0.1:http -r 10.0.0.102:http -m
# ipvsadm -a -t 172.16.0.1:http -r 10.0.0.102:http -m
- Có thể kiểm tra kết quả bằng lệnh
#ipvsadm -L
- Chỉnh default gateway tại máy load balancing
#route add -net default gw 10.0.0.1
Load blance bằng LVS / DR
- Thêm interface ảo cho load balancing (vì mô hình LVS/DR yêu cầu ta phải tạo thêm virtual IP)
# ifconfig eth1:0 10.0.0.100 netmask 255.255.255.0
- Khai báo dịch vụ ảo cho load balancing
# ipvsadm -A -t 10.0.0.100:http -s rr
- Khai báo server thật trên loadbalancing
# ipvsadm -a -t 10.0.0.100:http -r 10.0.0.101:http -m
# ipvsadm -a -t 10.0.0.100:http -r 10.0.0.102:http -m
- Có thể kiểm tra kết quả bằng lệnh
#ipvsadm -L
Cấu hình file để không bị mất khi khởi động
# /etc/ha.d/ldirectord.cf
checktimeout=15
checkinterval=5
autoreload=yes
logfile="/var/log/ldirectord.log"
quiescent=yes
virtual=10.0.0.100:80
fallback=127.0.0.1:80
real=10.0.0.101:80 gate
real=10.0.0.102:80 gate
service=http
request="test.html"
receive="Still alive"
scheduler=rr
persistent=600
protocol=tcp
checktype=negotiate
- Chạy dịch vụ
#/etc/init.d/ldirectord start
- Kiểm tra kết quả
#ipvsadm -L –n
Cấu hình máy chủ thật để đảm bảo xử lý gói tin
- Tạo card mạng ảo để nhận gói tin gửi tới theo địa chỉ card mạng ảo
#vi /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=10.0.0.100
NETMASK=255.255.255.255
NETWORK=10.0.0.0
BROADCAST=10.0.0.255
ONBOOT=yes
NAME=loopback
#/etc/init.d/network restart
# ip add sh lo
- Giới hạn việc quảng bá gói tin ARP
# vi /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.eth0.arp_announce = 2
# sysctl -p
- Cấu hình default gateway
#echo “any v default gw 10.0.0.1″ > /etc/sysconfig/static-routes
#service network restart
#route -n
- Tạo trang web để kiểm tra
#echo “Still alive” > /var/www/html/ldirectord.html
#echo “Real server 1” > /var/www/html/index.html
- Chạy thử web server
#service httpd restart
Kiểm tra ldirectord
- Kết nối vào máy chủ địa chỉ 172.16.0.1
Kết quả: trang index.html của server 1 hoặc server 2 trả về
- Xóa kết nối với máy chủ 1 và truy cập lại trang web
Cấu hình chạy HA cho Web server
- Cấu hình hostname cho các máy database1 và database2
#vi /etc/sysconfig/network
HOSTNAME=database1
# với máy cơ sở dữ liệu database2
# HOSTNAME=database2
- Cấu hình phần giải tên cho các máy (hai máy giống nhau)
#vi /etc/hosts
127.0.0.1 localhost localdomain
10.0.0.97 database1 database
10.0.0.98 database2 database
Ghi chú:
Tên database1 và database2 ở trên phải giống kết quả của câu lệnh uname –r khi thực hiện trên các máy.
- Cấu hình file /etc/ha.d/ha.cf
# vi /etc/ha.d/ha.cf
logfacility local0
keepalive 1
deadtime 10
warntime 5
initdead 120
udpport 694
mcast eth1 225.0.0.1 694 1 0
auto_failback off
node database1
node database2
ping 192.168.1.1
respawn hacluster /usr/lib/heartbeat/ipfail
crm on
Ghi chú:
§ Tên database1 và database2 ở trên phải giống kết quả của câu lệnh uname –n khi thực hiện trên các máy.
- Tạo chứng thực giữa 2 node:
#vi /etc/ha.d/authkeys
auth 2
2 sha1 ThisIsMyPassword
#chmod 600 /etc/ha.d/authkeys
- Đặt thời gian cho 2 node như nhau
- Cấu hình Heartbeat trên node còn lại
#/usr/lib/heartbeat/ha_propagate
- Chạy heartbeat trên cả 2 node
#/etc/init.d/heartbeat start
- Chạy heartbeat trên cả 2 node
Cấu hình STONITH
- Trên cả 2 node tạo khá chứng thực
# ssh-keygen -t rsa
- Phân bố khóa
database1# ssh-copy-id -i /root/.ssh/id_rsa.pub database2
database2# ssh-copy-id -i /root/.ssh/id_rsa.pub database1
- Kiểm tra kết quả
Database1# ssh -q -x -n -l root “ldirector1” “ls -l /”
- Kích hoạt tiến trình atm
/etc/init.d/atd start
chkconfig atd on
- Tạo STONITH clone resource
Cài đặt và cấu hình drbd
- Thêm ổ cứng vào cả 2 máy ảo (ổ cứng nhận trong 2 máy là /dev/sdb)
- Partition ổ cứng /dev/sdb trên hai máy thành ổ cứng /dev/sdb1 (chú ý không format ổ cứng).
- Làm sạch ổ cứng (trong trường hợp đã format ổ cứng)
# dd if=/dev/zero of=/dev/sdb1 bs=1M count=128
- Cài đặt gói drbd trên cả 2 máy
#tar –xvzf drbd-8.0.3.tar.gz
#cd drbd-8.0.3
#make clean all
#make install
#make install-tools
- Cấu hình file /etc/drbd.conf
resource mysql {
protocol C;
startup { wfc-timeout 0; degr-wfc-timeout 120; }
disk { on-io-error detach; }
syncer {
}
on database1 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.3.97:8000;
meta-disk internal;
}
on database2 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.3.98:8000;
meta-disk internal;
}
}
- Trên máy chủ database 1
[root@database1 etc]# drbdadm create-md mysql
[root@database1 etc]# drbdadm adjust mysql
[root@database1 ~]# drbdsetup /dev/drbd0 primary -o
[root@database1 ~]# service drbd start
[root@database1 ~]# service drbd status
[root@database1 etc]# drbdadm adjust mysql
[root@database1 ~]# drbdsetup /dev/drbd0 primary -o
[root@database1 ~]# service drbd start
[root@database1 ~]# service drbd status
- Trên máy chủ database 2
[root@database2 ~]# service drbd start
[root@ database2 ~]# service drbd status
[root@ database2 ~]# service drbd status
- Kiểm tra tiến trình đang chạy
[root@ database1 ~]# watch cat /proc/drbd
Cấu hình High Avaibility cho Mysql
- Trên 2 máy chủ database1 và database2
[root@database1 ~]# cd /etc/ha.d/
[root@ database1 ha.d]# cp /usr/share/doc/heartbeat-2.0.8/haresources ./
[root@ database1 ha.d]# cp /usr/share/doc/heartbeat-2.0.8/haresources ./
Chỉnh sửa file haresources thành
Database1 192.168.0.00 drbddisk::mysql Filesystem::/dev/drbd0::/var/lib/mysql::ext3 mysqld
- Format ổ cứng
[root@database2 ~]# drbdadm secondary mysql
[root@database1 ~]# drbdadm primary mysql
[root@database1 ~]# mkfs.ext3 -L mysql /dev/drbd0
[root@database1 ~]# mkfs.ext3 -L mysql /dev/drbd0
[root@database1 ~]# mkfs.ext3 /dev/drbd0
[root@database1 ~]# mount /dev/drbd0 /mnt/mysql
- Chỉnh sửa file cấu hình mysql bằng chỉnh sửa file my.cnf ở trên cả 2 máy
Chỉnh phần datadir=/mnt/mysql/data
- Khởi tạo có sở dữ liệu mysql
[root@database1 ~]# mysql_install_db
Cấu hình High Avaibility cho website và samba
- Trên máy 2 chủ database1 và database2 cấu hình heartbeat để cluster httpd
[root@database1 ~]# cd /etc/ha.d/
[root@ database1 ha.d]# cp /usr/share/doc/heartbeat-2.0.8/haresources ./
[root@ database1 ha.d]# cp /usr/share/doc/heartbeat-2.0.8/haresources ./
Chỉnh sửa file haresources thành
database1 192.168.85.3 httpd smb
Kết nối storage thông qua iSCSI thay cho sử dụng drbd
- Chuẩn bị storage và kết nối mạng cho storage
- Kiểm tra gói cài hỗ trợ iSCSI
[root@database ~]# rpm –q iscsi-initiator-utils-4.0.3.0-4
- Cấu hình iSCSI và khởi động dịch vụ
[root@database ~]# vi /etc/iscsi/iscsid.conf
Nhập user và password truy cập storage
node.session.auth.username = My_ISCSI_USR_NAME
node.session.auth.password = MyPassword
discovery.sendtargets.auth.username = My_ISCSI_USR_NAME
discovery.sendtargets.auth.password = MyPassword
node.session.auth.password = MyPassword
discovery.sendtargets.auth.username = My_ISCSI_USR_NAME
discovery.sendtargets.auth.password = MyPassword
[root@database ~]# /etc/init.d/iscsi start
- Tìm kiếm và đăng nhập target
[root@database ~]# iscsiadm -m discovery -t sendtargets -p 192.168.1.99
[root@database ~]# /etc/init.d/iscsi restart
[root@database ~]# /etc/init.d/iscsi restart
- Kiểm tra ổ đĩa được nhận
[root@database ~]# fdisk –l
- Format ổ cứng và mount vào hệ thống
[root@database ~]# fdisk /dev/sdd
[root@database ~]# mkfs.ext3 /dev/sdd1
[root@database ~]# mkfs.ext3 /dev/sdd1
[root@database ~]# mkfs.ext3 /dev/sdd1
[root@database ~]# mkdir /mnt/iscsi
[root@database ~]# mount /dev/sdd1 /mnt/iscsi
[root@database ~]# mount /dev/sdd1 /mnt/iscsi
- Cấu hình để mount tự động khi khởi động server
[root@database ~]# chkconfig iscsi on
Chỉnh sửa file /etc/fstab
/dev/sdd1 /mnt/iscsi ext3 _netdev 0 0