Cài đặt HA & LVS

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
  1. Cho phép IP fowarding
# echo “1” > /proc/sys/net/ipv4/ip_forward 
  1. Tạo virtual service cho LV server (qua phương thức round robin )
# ipvsadm -A -t 172.16.0.1:http -s rr 
  1. Đố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
  1. Có thể kiểm tra kết quả bằng lệnh
#ipvsadm -L  
  1. 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
  1. 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 
  1. Khai báo dịch vụ ảo cho load balancing
# ipvsadm -A -t 10.0.0.100:http -s rr  
  1. 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
  1. 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
  1. Chạy dịch vụ
#/etc/init.d/ldirectord start
  1. 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
  1. 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
  1. 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
  1. Cấu hình  default gateway
#echo “any v default  gw 10.0.0.1″ > /etc/sysconfig/static-routes
#service network restart
#route -n
  1. Tạo trang web để kiểm tra
#echo “Still alive” > /var/www/html/ldirectord.html
#echo “Real server 1” > /var/www/html/index.html
  1. 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

  1. 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 
  1. 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.
  1. 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.
  1. 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
  1. Đặt thời gian cho 2 node như nhau
  2. Cấu hình Heartbeat trên node còn lại
#/usr/lib/heartbeat/ha_propagate
  1. Chạy heartbeat trên cả 2 node
#/etc/init.d/heartbeat start
  1. Chạy heartbeat trên cả 2 node
Cấu hình STONITH
  1. Trên cả 2 node tạo khá chứng thực
# ssh-keygen -t rsa
  1. 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
  1. Kiểm tra kết quả
Database1# ssh -q -x -n -l root “ldirector1” “ls -l /”
  1. Kích hoạt tiến trình atm
/etc/init.d/atd start
chkconfig atd on
  1. Tạo STONITH clone resource
Cài đặt và cấu hình drbd
  1. Thêm ổ cứng vào cả 2 máy ảo (ổ cứng nhận trong 2 máy là /dev/sdb)
  2. Partition ổ cứng /dev/sdb trên hai máy thành ổ cứng /dev/sdb1 (chú ý không format ổ cứng).
  3. 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
  1. 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
  1. 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;
        }
      }
  1. 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
  1. Trên máy chủ database 2
[root@database2 ~]# service drbd start
[root@ database2 ~]# service drbd status
  1. Kiểm tra tiến trình đang chạy
[root@ database1 ~]# watch cat /proc/drbd
Cấu hình High Avaibility cho Mysql
  1. 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 ./
Chỉnh sửa file haresources thành
Database1  192.168.0.00 drbddisk::mysql Filesystem::/dev/drbd0::/var/lib/mysql::ext3 mysqld
  1. 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 /dev/drbd0
[root@database1 ~]# mount /dev/drbd0 /mnt/mysql
  1. 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
  1. 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
  1. 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 ./
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
  1. Chuẩn bị storage và kết nối mạng cho storage
  2. Kiểm tra gói cài hỗ trợ iSCSI
[root@database ~]#  rpm –q iscsi-initiator-utils-4.0.3.0-4
  1. 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
[root@database ~]#  /etc/init.d/iscsi start
  1. 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
  1. Kiểm tra ổ đĩa được nhận
[root@database ~]#  fdisk –l
  1. 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 ~]#  mkdir /mnt/iscsi
[root@database ~]#  mount /dev/sdd1 /mnt/iscsi
  1. 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