- Biên dịch và cài đặt phiên bản LTS mới của HAProxy, biên dịch và cài đặt Keepaliving
- Kích hoạt đa luồng HAProxy, giữ số lượng luồng phù hợp với số lõi CPU và liên kết các lõi CPU
- Do số lượng doanh nghiệp lớn nên để tránh thao tác sai file cấu hình, cần tạo 1 file cấu hình cho mỗi doanh nghiệp và lưu thống nhất trong thư mục /etc/haproxy/conf.d.
- Dựa trên ACL, chức năng tải tên nhiều miền IP duy nhất được triển khai và hoạt động kinh doanh của hai tên miền: www.yanlinux.org và www.yanlinux.edu
- Triển khai sao chép chủ-nô lệ MySQL
- Tên miền www.yanlinux.edu dựa trên HAProxy+Nginx+Tomcat+MySQL và triển khai ứng dụng JAVA của Jpress
- Dựa trên HAProxy+Nginx+PHP+MySQL+Redis cho tên miền www.yanlinux.org, ứng dụng PHP của phpMyadmin được triển khai và phiên Phiên được lưu thống nhất vào Redis.
1 cấu hình máy chủ DNS
Thiết lập độ phân giải DNS cho www.yanlinux.org (VIP:10.0.0.100) và www.yanlinux.edu (VIP:10.0.0.200) trên máy chủ 10.0.0.7.
Chìa khóa để cấu hình:
- Trong tập tin cấu hình chính
/etc/named.conf
trung tướng lắng nghe cổng 53 { 127.0.0.1; }
TRONG 127.0.0.1
Thay đổi thành máy chủ cục bộ
; Cũng cần phải cho phép truy vấn { localhost; };
Thêm trước //
Nhận xét nó hoặc thay thế máy chủ cục bộ
Thay đổi thành bất kì
hoặc thêm từng thông tin phân đoạn mạng vào cuối.
- Quyền của mỗi tệp thư viện phân giải tên miền phải được thay đổi thành 641 và nhóm thuộc về
được đặt tên
#利用脚本自动搭建www.yanlinux.org的dns解析配置 [root@dns ~]$ cat install_dns.sh #!/bin/bash DOMAIN=yanlinux.org HOST=www HOST_IP=10.0.0.100 CPUS=`lscpu |awk '/^CPU\(s\)/{print $2}'` . /etc/os-release color () { RES_COL=60 MOVE_TO_COL="echo -en \\033[${RES_COL}G" SETCOLOR_SUCCESS="echo -en \\033[1;32m" SETCOLOR_FAILURE="echo -en \ \033[1;31m" SETCOLOR_WARNING="echo -vi \\033[1;33m" SETCOLOR_NORMAL="echo -vi \E[0m" echo -n "$1" && $MOVE_TO_COL echo -n "[" nếu [ $2 = "thành công" -o $2 = "0" ] ;sau đó ${SETCOLOR_SUCCESS} echo -n $" OK " elif [ $2 = "thất bại" -o $2 = "1" ] ;sau đó ${SETCOLOR_FAILURE} echo -n $"FAILED" else ${SETCOLOR_WARNING} echo -n $"WARNING" fi ${SETCOLOR_NORMAL} echo -n "]" echo } install_dns () { if [ $ID = 'centos' -o $ID = 'rocky' ] ;sau đó yum install -y bind bind-utils elif [ $ID = 'ubuntu' ];rồi tô màu "Bạn có thể sử dụng Ubuntu không? 1 exit #apt update #apt install -y bind9 bind9-utils else color "不支持此操作系统,退出!" 1 thoát fi } config_dns () { sed -i -e '/listen-on/s/127.0.0.1/localhost/' -e '/allow-query/s/localhost/any/' /etc/named.conf cat >> /etc/named.rfc1912.zones < /var/named/$DOMAIN.zone <> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7 <<>> www.yanlinux.org ;; tùy chọn toàn cục: +cmd ;; Đã có câu trả lời: ;; ->>HEADER<<- mã lệnh: QUERY, trạng thái: NOERROR, id: 56759 ;; cờ: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: phiên bản: 0, cờ:; MBZ: 0x0005, udp: 4096 ;; PHẦN CÂU HỎI: ;www.yanlinux.org. TRONG MỘT ;; PHẦN TRẢ LỜI: www.yanlinux.org. 5 TRONG MỘT 10.0.0.100 ;; PHẦN AUTHORITY: yanlinux.org. 5 IN NS master.yanlinux.org. ;; PHẦN BỔ SUNG: master.yanlinux.org. 5 IN A 10.0.0.7 ;; Thời gian truy vấn: 0 msec ;; MÁY CHỦ: 10.0.0.2#53(10.0.0.2) ;; KHI NÀO: Wed Mar 08 21:48:00 CST 2023 ;; KÍCH THƯỚC MSG rcvd: 98 [root@dns ~]$ dig www.yanlinux.edu ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7 <<>> www.yanlinux.edu ;; tùy chọn toàn cục: +cmd ;; Đã trả lời: ;; ->>HEADER<<- mã lệnh: QUERY, trạng thái: NOERROR, id: 19598 ;; cờ: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, BỔ SUNG: 2 ;; OPT PEUDOSECTION: ; EDNS: phiên bản: 0, cờ:; MBZ: 0x0005, udp: 4096 ;; PHẦN CÂU HỎI: ;www.yanlinux.edu. IN A ;; PHẦN TRẢ LỜI: www.yanlinux.edu. 5 IN A 10.0.0.200 ;; PHẦN AUTHORITY: yanlinux.edu. 5 IN NS master.yanlinux.edu. ;; PHẦN BỔ SUNG: master.yanlinux.edu. 5 IN A 10.0.0.7 ;; Thời gian truy vấn: 0 msec ;; MÁY CHỦ: 10.0.0.2#53(10.0.0.2) ;; KHI NÀO: Thứ tư, ngày 08 tháng 03 năm 2023 lúc 21:48:06 CST ;; KÍCH THƯỚC TIN NHẮN đã nhận: 98
2 Cấu hình máy khách
Trên máy chủ 10.0.0.17, đặt IP của máy chủ DNS làm DNS của nó. Trước khi thực hiện bước này, bạn phải thực hiện điểm chính đầu tiên được đề cập ở trên khi thiết lập máy chủ DNS, nếu không máy khách không thể phân giải chính xác tên miền.
[root@internet ~]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO="static" NAME="eth0" DEVICE="eth0" IPADDR=10.0.0.17 PREFIX=24 GATEWAY=10.0.0.2 DNS1= 10.0.0.7 #改成DNS服务器的IP #DNS2=114.114.114.114 ONBOOT="yes" #重启网络服务 [root@internet ~]$ systemctl restart network [root@internet network-scripts]$ cat /etc/resolv.conf # Được tạo bởi máy chủ tên NetworkManager 10.0.0.7 #测试解析 [root@internet ~]$ máy chủ www.baidu.com www.baidu.com là bí danh của www.a.shifen.com. www.a.shifen.com có địa chỉ 36.152.44.95 www.a.shifen.com có địa chỉ 36.152.44.96 [root@internet ~]$ dig www.yanlinux.org ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7 <<>> www.yanlinux.org ;; tùy chọn toàn cục: +cmd ;; Đã có câu trả lời: ;; ->>HEADER<<- mã lệnh: QUERY, trạng thái: NOERROR, id: 19011 ;; cờ: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, BỔ SUNG: 2 ;; OPT PEUDOSTION: ; EDNS: phiên bản: 0, cờ:; udp: 4096 ;; PHẦN CÂU HỎI: ;www.yanlinux.org. TRONG MỘT ;; PHẦN TRẢ LỜI: www.yanlinux.org. 86400 TRONG MỘT 10.0.0.100 ;; PHẦN CÓ QUYỀN: yanlinux.org. 86400 TRONG NS master.yanlinux. org. ;; PHẦN BỔ SUNG: master.yanlinux.org. 86400 TRONG 10.0.0.7 ;; Thời gian truy vấn: 0 msec ;; MÁY CHỦ: 10.0.0.7#53(10.0.0.7) ;; KHI NÀO: Thứ năm, ngày 09 tháng 03, 10:40 :06 CST 2023 ;; KÍCH THƯỚC MSG đã nhận: 98 [root@internet ~]$ dig www.yanlinux.edu ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7 <<>> www.yanlinux.edu ;; tùy chọn toàn cục: +cmd ;; Đã có câu trả lời: ;; ->>HEADER< <- opcode: QUERY, trạng thái: NOERROR, id: 64928 ;; cờ: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITION: 2 ;; OPT PEUDOSECTION: ; EDNS: phiên bản: 0, cờ :; udp: 4096 ;; PHẦN CÂU HỎI: ;www.yanlinux.edu. IN A ;; PHẦN TRẢ LỜI: www.yanlinux.edu. 86400 IN A 10.0.0.200 ;; PHẦN CÓ QUYỀN: yanlinux.edu. 86400 TRONG NS master.yanlinux.edu. ;; PHẦN BỔ SUNG: master.yanlinux.edu. 86400 TRONG A 10.0.0.7 ;; Thời gian truy vấn: 0 msec ;; MÁY CHỦ: 10.0.0.7#53( 10.0.0.7) ;; KHI NÀO: Thứ năm, ngày 09 tháng 03 năm 2023 10:40:11 CST ;; KÍCH THƯỚC MSG đã nhận: 98
3 Triển khai các dịch vụ hoạt động và sao lưu NFS
- Thiết lập máy chủ NFS chính
[root@NFS ~]$ yum -y install nfs-utils [root@NFS ~]$ systemctl Enable --now nfs-server.service #Tạo người dùng để truyền [root@NFS ~]$ groupadd -g 666 www [ root@NFS ~]$ useradd -u 666 www -g 666 #Tạo thư mục chia sẻ NFS [root@NFS ~]$ mkdir /data/www -p [root@NFS ~]$ chown -R www. /data/www/ [root@NFS ~]$ mkdir /data/web2 [root@NFS ~]$ chown -R www.www /data/web2/ #Thêm chia sẻ Cấu hình [root@NFS ~]$ vi /etc/exports /data/www *(rw,all_squash,anonuid=666,anongid=666) #Với quyền đọc và ghi, tất cả người dùng từ xa được ánh xạ tới người dùng/dữ liệu/web2 tương ứng với 666 *(rw,all_squash,anonuid=666,anongid=666) #Restart [root@NFS ~]$ systemctl restart nfs-server. service [ root@NFS ~]$ showmount -e 10.0.0.68 Xuất danh sách cho 10.0.0.68: /data/web2 * /data/www * #Tải xuống sersync, thực hiện sao lưu và đồng bộ hóa dữ liệu theo thời gian thực với máy chủ sao lưu NFS #Tải xuống sersync, giải nén, đặt biến PATH [root@NFS ~]$ wget https://storage.googleapis.com/google-code-archive- tải xuống/v2 /code.google.com/sersync/sersync2.5.4_64bit_binary_stable_final.tar.gz [root@NFS ~]$ tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz [root@NFS ~]$ cp -a GNU-Linux-x86/ /usr/local/sersync [root@NFS ~]$ echo "PATH=/usr/local/sersync:$PATH " > /etc/profile.d/sersync.sh [root@NFS ~]$ nguồn /etc/profile.d/sersync.sh #Tạo tệp xác minh [root@NFS ~]$ echo lgq123456 > /etc/rsync.pas [root@NFS ~]$ chmod 600 /etc/rsync.pas #Sao lưu cấu hình sersync file , sửa đổi tệp cấu hình [root@NFS ~]$ cp -a /usr/local/sersync/confxml.xml{,.bak} ##web1 (Kedao Cloud) chia sẻ cấu hình doanh nghiệp [root@NFS ~]$ vi /usr/local/sersync/confxml.xml 1 2 < head version="2.5"> 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ##Sửa đổi hành vi này thành true và các thuộc tính tệp sẽ được đồng bộ hóa sau khi thay đổi 20 21 22 23 24 ##Sửa đổi dòng này, thư mục nguồn cần được đồng bộ hóa 25 # Sửa đổi dòng này, chỉ định địa chỉ máy chủ dự phòng và tên mô-đun của daemon rsync và bật khởi động ssh Tại thời điểm này, tên là thư mục đích khi chạy ở chế độ shell từ xa 26 27 28 29 30 31 #Sửa đổi hành vi này thành đúng, chỉ định người dùng và mật khẩu của cấu hình rsync của máy chủ dự phòng... #Thực hiện đồng bộ hóa trong nền [root@NFS ~]$ sersync2 -dro /usr/local/sersync/ confxml .xml ##web2(jpress) cấu hình chia sẻ doanh nghiệp [root@NFS ~]$ cd /usr/local/sersync/ root@NFS sersync]$ cp confxml.xml jpress.xml ###So với web1, bạn chỉ cần sửa đổi hai thẻ bên dưới [root@NFS sersync]$ vi jpress.xml 2 < head version="2.5"> 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #Chỉ cần thay đổi thư mục dùng chung trong web1 thành 25 trong web2 #Đây là máy chủ dự phòng Xác định mô-đun tên của daemon rsync tương ứng với web2 26 27 28 29 30 31 32 33 34 35 #Chạy dịch vụ tương ứng web2 một cách độc lập trong nền [root@NFS sersync]$ sersync2 -dro /usr/local/sersync/jpress.xml #Để ngăn dịch vụ được thực thi thủ công bị ngắt kết nối sau khi máy chủ được khởi động lại, hãy viết lệnh thực thi vào tệp và khởi động nó bằng boot [root@NFS ~]$ echo -e "/usr/local/sersync/sersync2 - dro /usr/local/ sersync/confxml.xml &> /dev/null\n/usr/local/sersync/sersync2 -dro /usr/local/sersync/jpress.xml &> /dev/null" > /etc/profile.d/sersync2.sh [root@NFS ~]$ chmod +x /etc/profile.d/sersync2.sh5"> 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #只需要将web1中的这个共享目录改成web2的 25 #这个是备份服务器中定义对应web2的rsync daemon的模块名 26 27 28 29 30 31 32 33 34 35 #后台独立运行web2对应服务 [root@NFS sersync]$ sersync2 -dro /usr/local/sersync/jpress.xml #为了防止服务器重启后手动执行的服务断开,将执行命令写进文件中,随开机启动 [root@NFS ~]$ echo -e "/usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml &> /dev/null\n/usr/local/sersync/sersync2 -dro /usr/local/sersync/jpress.xml &> /dev/null" > /etc/profile.d/sersync2.sh [root@NFS ~]$ chmod +x /etc/profile.d/sersync2.sh5"> 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #只需要将web1中的这个共享目录改成web2的 25 #这个是备份服务器中定义对应web2的rsync daemon的模块名 26 27 28 29 30 31 32 33 34 35 #后台独立运行web2对应服务 [root@NFS sersync]$ sersync2 -dro /usr/local/sersync/jpress.xml #为了防止服务器重启后手动执行的服务断开,将执行命令写进文件中,随开机启动 [root@NFS ~]$ echo -e "/usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml &> /dev/null\n/usr/local/sersync/sersync2 -dro /usr/local/sersync/jpress.xml &> /dev/null" > /etc/profile.d/sersync2.sh [root@NFS ~]$ chmod +x /etc/profile.d/sersync2.sh78" name="web2-backup"/> #Đây là tên mô-đun của daemon rsync được xác định trong máy chủ sao lưu tương ứng với web2 26 27 28 29 30 31 32 33 34 35 #Chạy dịch vụ tương ứng web2 một cách độc lập trong nền [root@NFS sersync]$ sersync2 -dro /usr/local/sersync/jpress. xml #For Để ngăn chặn việc ngắt kết nối các dịch vụ được thực thi thủ công sau khi máy chủ được khởi động lại, hãy viết lệnh thực thi vào một tệp và khởi động nó bằng boot [root@NFS ~]$ echo -e "/usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml &> /dev/null\n/usr/local/sersync/sersync2 -dro /usr/local/sersync/jpress.xml & > /dev/null" > /etc/profile.d/sersync2.sh [root@NFS ~]$ chmod +x /etc/profile.d/sersync2.sh78" name="web2-backup"/> #Đây là tên mô-đun của daemon rsync được xác định trong máy chủ sao lưu tương ứng với web2 26 27 28 29 30 31 32 33 34 35 #Chạy dịch vụ tương ứng web2 một cách độc lập trong nền [root@NFS sersync]$ sersync2 -dro /usr/local/sersync/jpress. xml #For Để ngăn chặn việc ngắt kết nối các dịch vụ được thực thi thủ công sau khi máy chủ được khởi động lại, hãy viết lệnh thực thi vào một tệp và khởi động nó bằng boot [root@NFS ~]$ echo -e "/usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml &> /dev/null\n/usr/local/sersync/sersync2 -dro /usr/local/sersync/jpress.xml & > /dev/null" > /etc/profile.d/sersync2.sh [root@NFS ~]$ chmod +x /etc/profile.d/sersync2.sh
- Triển khai máy chủ dự phòng nfs
#Chạy rsync như một dịch vụ độc lập trên máy chủ sao lưu NFS 10.0.0.78 và triển khai chức năng xác minh [root@NFS-bak ~]$ yum -y install rsync-daemon #Tạo thư mục sao lưu [root@NFS-bak ~]$ mkdir /data /backup -p [root@NFS-bak ~]$ mkdir /data/web2-backup #Sửa đổi tệp cấu hình và thêm thông tin sau [root@NFS-bak ~]$ vi /etc/rsyncd.conf uid = www #Chỉ định người dùng nào sẽ truy cập vào thư mục dùng chung và chỉ định người dùng đó là chủ sở hữu của tệp được tạo. Mặc định là không có ai gid = www max links = 0 bỏ qua lỗi loại trừ = bị mất+. đã tìm thấy /tệp nhật ký = /var/log/rsyncd.log tệp pid = /var/run/rsyncd.pid khóa tệp = /var/run/rsyncd.lock tra cứu ngược = không [sao lưu] #Mỗi tên mô-đun tương ứng với một thư mục đường dẫn khác nhau Nếu mô-đun có cùng tên có hiệu lực path = /data/backup/ comment = backup dir read only = no #Mặc định là có, nghĩa là người dùng xác thực chỉ đọc = rsyncuser #Theo mặc định, ẩn danh có thể truy cập Máy chủ rsync, tệp bí mật của người dùng = /etc/rsync.pas [web2-backup] path = /data/web2-backup/ comment = backup dir only read = không có người dùng xác thực = tệp bí mật rsyncuser = /etc/rsync.pas #Tạo tệp xác minh [root@NFS-bak ~]$ echo "rsyncuser:lgq123456" > /etc/rsync.pas #Tạo người dùng truyền tải [root@NFS-bak ~]$ chmod 600 /etc/rsync.pas [root@NFS-bak ~]$ groupadd -g 666 www [root@NFS-bak ~]$ useradd -u 666 www -g 666 [root@NFS-bak ~]$ chown www.www /data/backup/ -R [root@NFS-bak ~]$ chown -R www .www /data/web2-backup/ #Tải lại cấu hình [root@NFS-bak ~]$ rsync --daemon #Đặt nó vào tệp và tự động khởi động nó với máy chủ [root@NFS-bak ~]$ echo "rsync --daemon" > /etc/profile.d/rsync.sh [root@NFS-bak ~]$ chmod +x /etc/profile.d/rsync.sh
- Kiểm tra xem dữ liệu chính và dữ liệu sao lưu có được đồng bộ hóa hay không
#Tạo tệp test.txt trong thư mục dùng chung trên máy chủ chính NFS và kiểm tra xem nó có được đồng bộ hóa trên máy chủ dự phòng hay không [root@NFS ~]$ cd /data/www/ [root@NFS www]$ touch test.txt [root@NFS www ]$ ll tổng cộng 0 -rw-r--r-- 1 gốc gốc 0 9 tháng 3 22:23 test.txt [root@NFS-bak ~]$ ll /data/backup/ tổng 0 -rw-r--r-- 1 www www 0 Ngày 9 tháng 3 22:23 test.txt
4 Thiết lập các nút chủ-phụ của MySQL trên máy chủ 10.0.0.48 và 10.0.0.58
- Nút chính: 10.0.0.48
- Nút nô lệ: 10.0.0.58
- Xây dựng nút chính
#Cài đặt mysql [root@mysql-master ~]$ yum -y install mysql-server #Tạo đường dẫn lưu trữ nhật ký nhị phân và chỉ định đường dẫn cũng như tiền tố của tệp life trong tệp cấu hình [root@mysql-master ~] $ mkdir /data /binlog [root@mysql-master ~]$ chown mysql. /data/binlog/ #Đặt tệp cấu hình và khởi động dịch vụ [root@mysql-master ~]$ cat /etc/my.cnf [mysqld] server-id=48 log_bin=/data/binlog/mysql-bin [root@mysql-master ~]$ systemctl kích hoạt --now mysqld #Tạo người dùng sao chép và ủy quyền[ root@mysql-master ~]$ mysql -uroot -plgq123456 -e "tạo người dùng 'repluser'@'10.0.0.%' được xác định bởi 'lgq123456';" [root@mysql-master ~]$ mysql -uroot -plgq123456 -e "cấp bản sao nô lệ trên *.* thành 'repluser'@'10.0. 0.%';" #Tạo cơ sở dữ liệu và tài khoản kodbox tương ứng [root@mysql-master ~]$ mysql -uroot -plgq123456 -e "tạo cơ sở dữ liệu kodbox;" [root@mysql-master ~]$ mysql -uroot -plgq123456 -e "tạo người dùng kodbox@'10.0.0.%' được xác định bởi 'lgq123456';" chủ ~]$ mysql -uroot -plgq123456 -e "cấp tất cả trên kodbox.* cho kodbox@'10.0.0.%';" #Tạo cơ sở dữ liệu và người dùng tương ứng với doanh nghiệp web2 [root@mysql-master ~]$ mysql -uroot -plgq123456 -e "tạo cơ sở dữ liệu jpress ;" [root@mysql-master ~]$ mysql -uroot -plgq123456 -e "tạo người dùng jpress@'10.0.0.%' được xác định bởi '123456';" [root@mysql-master ~]$ mysql -uroot -plgq123456 -e "cấp tất cả trên jpress.* cho jpress@'10.0.0.%'; " #Thực hiện sao lưu toàn bộ [root@mysql-master ~]$ mysqldump -uroot -plgq123456 -A -F --single-transaction --master-data=1 > full_backup.sql #Copy dữ liệu sao lưu vào nút nô lệ [root@mysql-master ~]$ scp full_backup.sql 10.0.0.58:
- Xây dựng nút nô lệ
#Cài đặt [root@mysql-slave ~]$ yum -y install mysql-server #Sửa đổi tệp cấu hình và khởi động [root@mysql-slave ~]$ vi /etc/my.cnf #Thêm thông tin sau máy chủ [mysqld] - id=58 chỉ đọc [root@mysql-slave ~]$ systemctl kích hoạt --now mysqld #Sửa đổi tệp sao lưu trong thay đổi chủ Thêm thông tin nút chính vào [root@mysql-slave ~]$ vi full_backup.sql... CHANGE MASTER TO MASTER_HOST='10.0.0.48', #Thêm địa chỉ IP của nút chính MASTER_USER='repluser', #Thêm tài khoản đã tạo trên nút chính MASTER_PASSWORD='lgq123456', #Thêm mật khẩu tài khoản MASTER_PORT=3306, #Thêm số cổng MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=157; ...... #Khôi phục bản sao lưu###Tạm thời đóng nhật ký nhị phân [root@mysql-slave ~]$ mysql mysql> đặt sql_log_bin =0 ; ###Khôi phục mysql> nguồn /root/full_backup.sql; ##Bắt đầu chuỗi liên kết của nút chính-nô lệ mysql> bắt đầu nô lệ ##Xem trạng thái mysql> hiển thị trạng thái phụ\G ********************** **** ** 1. hàng *************************** Slave_IO_State: Đang chờ nguồn gửi sự kiện Master_Host: 10.0.0.48 Master_User : repluser Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000003 Read_Master_Log_Pos: 157 Relay_Log_File: mysql-slave-relay-bin.000002 Relay_Log_Pos: 326 Relay_Master_Log_File: mysql-bin.000003 Slave_IO_Running: Có Slave_SQL_Running: Có Replicate_Do_DB: Sao chép_Ignore_DB: Sao chép_Do_Table: Sao chép_Ignore_Table: Sao chép_Wild_Do_Table: Sao chép_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 157 Rơle_Log_Space: 542 Until_Condition: Không có Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: Không Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: Không Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Sao chép_Ignore_Server_Ids: Master_Server_Id: 48 Master_UUID: bdcb41ce-be61-11ed-808a-000c2924e25d Master_Info_File: mysql.slave_master_info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Bản sao có đọc tất cả nhật ký chuyển tiếp; chờ cập nhật thêm Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Đã thực thi_Gtid_Set: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: Master_public_key_path: Get_master_public_key: 0 Network_Namespace: 1 hàng trong bộ, 1 cảnh báo (0,01 giây)
- Kiểm tra xem chủ và nô lệ có được đồng bộ hóa không
#Tạo cơ sở dữ liệu thử nghiệm trên nút chính mysql> tạo cơ sở dữ liệu t1 Truy vấn OK, 1 hàng bị ảnh hưởng (0,00 giây) mysql> hiển thị cơ sở dữ liệu +------------------- -+ | Cơ sở dữ liệu | +-------+ | lược đồ thông tin | -----------------+ 6 hàng trong bộ (0,00 giây) #Kiểm tra xem mysql có tồn tại trên nút nô lệ hay không> hiển thị cơ sở dữ liệu +-------------------+ | Cơ sở dữ liệu +---------- ---------+ | lược đồ thông tin | + 6 hàng trong bộ (0,01 giây) ##Cho biết có thể đồng bộ hóa bản sao chủ-nô lệ
5 Triển khai redis trên máy chủ 10.0.0.88
#Install redis [root@redis ~]$ yum -y install redis #Sửa đổi tệp cấu hình [root@redis ~]$ vi /etc/redis.conf bind 0.0.0.0 #Thay đổi 127.0.0.1 trong dòng này thành 0.0.0.0 , để đạt được quyền truy cập từ xa [root@redis ~]$ systemctl Enable --now redis
6 Xây dựng doanh nghiệp web1 www.yanlinux.org (kinh doanh trên nền tảng đám mây Kedao)
6.1 Xây dựng nginx và php-fpm trên 10.0.0.28
# 1. Sử dụng tập lệnh để biên dịch và cài đặt nginx chỉ bằng một cú nhấp chuột [root@web1 ~]$ cat install_nginx.sh #!/bin/bash OS_TYPE=`awk -F'[ "]' '/^NAME/{print $2 }' /etc /os-release` OS_VERSION=`awk -F'[".]' '/^VERSION_ID/{print $2}' /etc/os-release` CPU=`lscpu |awk '/^CPU\(s\)/{print $2}'' SRC_DIR=/usr/local/src read -p "$(echo -e '\033[1;32mVui lòng nhập số phiên bản đã tải xuống:\ 033 [0m')" NUM NGINX_FILE=nginx-${NUM} NGINX_INSTALL_DIR=/apps/nginx color () { RES_COL=60 MOVE_TO_COL="echo -en \\033[${RES_COL}G" SETCOLOR_SUCCESS="echo -en \\033[1;32m" SETCOLOR_FAILURE="echo -en \\033[1;31m" SETCOLOR_WARNING=" echo -en \\033[1;33m" SETCOLOR_NORMAL="echo -en \E[0m" echo -n "$1" && $MOVE_TO_COL echo -n "[" if [ $2 = "thành công" -o $2 = "0" ] ;thì ${SETCOLOR_SUCCESS} echo -n $" OK " elif [ $2 = "thất bại" -o $2 = "1" ] ;sau đó ${SETCOLOR_FAILURE} echo -n $"FAILED" else ${SETCOLOR_WARNING} echo -n $"WARNING" fi ${SETCOLOR_NORMAL} echo -n "]" echo } #Tải xuống mã nguồn wget_package(){ [ -e ${NGINX_INSTALL_DIR} ] && { color "nginx có Cài đặt, vui lòng gỡ cài đặt rồi cài đặt" 1; exit; } cd ${SRC_DIR} if [ -e ${NGINX_FILE}.tar.gz ];then màu "Gói mã nguồn đã sẵn sàng" 0 màu khác "Bắt đầu tải xuống gói mã nguồn" 0 wget http://nginx.org/download/${NGINX_FILE}.tar. gz [ $ ? -ne 0 ] && { color "Không thể tải xuống tệp ${NGINX_FILE}.tar.gz" 1; } fi } #Biên dịch và cài đặt install_nginx(){ color "Bắt đầu cài đặt nginx" 0 if id nginx &> /dev/null;then color "người dùng nginx đã tồn tại" 1 else useradd -s /sbin/nologin -r nginx color "Hoàn thành tạo tài khoản người dùng nginx" 0 fi color "Bắt đầu Cài đặt gói phụ thuộc nginx" 0 if [ $OS_TYPE == "Centos" -a ${OS_VERSION} == '7' ];then yum -y install make gcc pcre-devel openssl-devel zlib-devel perl-ExtUtils-Embed elif [ $OS_TYPE == "Centos" -a ${OS_VERSION} == '8' ];sau đó yum -y cài đặt make gcc-c++ libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel perl-ExtUtils-Embed elif [ $OS_TYPE == "Rocky" ];sau đó yum -y cài đặt tạo gcc libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel Perl-ExtUtils-Embed elif [ $OS_TYPE == "Ubuntu" ];then apt update apt - y cài đặt tạo gcc libpcre3 libpcre3-dev openssl libssl-dev zlib1g-dev else color 'Hệ thống này không được hỗ trợ!' 1 exit fi #Bắt đầu biên dịch và cài đặt màu "Bắt đầu biên dịch và cài đặt nginx" 0 cd $SRC_DIR tar xf ${NGINX_FILE}.tar.gz cd ${SRC_DIR}/$ {NGINX_FILE} ./configure --prefix=${NGINX_INSTALL_DIR} --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module make -j ${ CPU} && thực hiện cài đặt [ $? -eq 0 ] && color "nginx Biên dịch và cài đặt thành công" 0 || { color "Biên dịch và cài đặt nginx không thành công, thoát!" 1 ;exit; } ln -s ${NGINX_INSTALL_DIR}/sbin/nginx /usr/sbin/ &> /dev/null #Tên dịch vụ chính cat > /lib/systemd/system/nginx.service < /dev/null systemctl is-active nginx &> /dev/null || { color "nginx 启动失败,退出!" 1 ; ra; } color "nginx 安装完成" 0 } wget_package install_nginx ##执行脚本安装nginx [root@web1 ~]$ sh install_nginx.sh [root@web1 ~]$ ss -ntl State Recv-Q Send-Q Địa chỉ cục bộ: Cổng ngang hàng Địa chỉ: Quá trình cổng LISTEN 0 128 0.0.0.0:80 0.0.0.0:* # 2.安装配置php-fpm [root@web1 ~]$ yum -y install php-fpm ##安装php-mysql 以及php-redis所依赖的包 [root@web1 ~]$ php-mysqlnd php-json php-cli php-devel ##下载php-redis [root@web1 ~]$ wget https://pecl.php.net/get/redis-5.3.7.tgz -P /usr/local/src/ [root@web1 ~]$ cd /usr/local/src/ [root@web1 src]$ tar xf redis-5.3.7.tgz [root@web1 src]$ cd redis-5.3.7/ [root@web1 redis-5.3.7]$ phpize Định cấu hình cho: PHP Phiên bản Api: 20170718 Zend Module Api No: 20170718 Zend Extension Api No: 320170718 [root@web1 redis-5.3.7]$ ./configure [root@web1 redis-5.3.7]$ make && make install ##创建php支持redis扩展的配置文件 [root@web1 redis-5.3.7]$ vi /etc/php.d/31-redis.ini Extension=redis #加入此行 [root@web1 redis-5.3.7]$ cd #修改php上传限制配置 [root@web1 ~]$ vi /etc/php.ini post_max_size = 200M #修改为200M upload_max_filesize = 200M #改为200M,实现大文件上传 #修改配置文件 [root@web1 ~]$ vi /etc/php-fpm.d/www.conf user = nginx #修改为nginx group = nginx #修改为nginx ;listen = /run/php-fpm/www.sock #注释此行 listen = 127.0.0.1:9000 #添加此行,监控本机的9000端口 pm.status_path = /fpm_status #取消此行的注释,并改为fpm_status,防止与nginx服务的status冲突 ping.path = /ping #取消此行的注释 ping.response = pong #取消此行的注释 ##启动服务 [root@web1 ~]$ systemctl Enable --now php-fpm # 3.配置nginx虚拟主机配置文件 ##为了方便管理不同的业务,nginx支持子配置文件 ##创建子配置文件目录 [root@web1 ~]$ mkdir /apps/nginx/conf/conf.d [root@web1 ~]$ vi /apps/nginx/conf/nginx.conf include /apps/nginx/conf/conf.d/*.conf; #在http语句块最后一行添加上这一行 ##创建业务配置文件 [root@web1 ~]$ cat /apps/nginx/conf/conf.d/www.yanlinux.org.conf server { listen 80; tên_máy chủ www.yanlinux.org; client_max_body_size 100M; tắt server_tokens; vị trí / { root /data/kodbox/; chỉ mục Index.php Index.html Index.htm; } vị trí ~ \.php$ { root /data/kodbox/; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; bao gồm fastcgi_params; fastcgi_hide_header X-Powered-By; } vị trí ~ ^/(ping|fpm_status)$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } # 4. Tải xuống [root@web1 ~]$ systemctl restart nginx.service php-fpm.service
Kiểm tra trang trạng thái php và dịch vụ thử nghiệm đã được thiết lập thành công.
6.2 Triển khai kodbox
##Cài đặt các gói phụ thuộc cần thiết cho kodbox [root@web1 ~]$ yum -y install php-mbstring php-xml php-gd #Tải xuống gói nguồn [root@web1 ~]$ wget https:// static.kodcloud. com/update/download/kodbox.1.35.zip [root@web1 ~]$ giải nén kodbox.1.35.zip -d /data/kodbox [root@web1 ~]$ chown -R nginx.nginx /data/kodbox/
6.3 Gắn máy chủ NFS để thực hiện sao lưu dữ liệu trang web từ xa
#Cài đặt nfs-utils để xây dựng và gắn kết NFS [root@web1 ~]$ yum -y install nfs-utils [root@web1 ~]$ showmount -e 10.0.0.68 Xuất danh sách cho 10.0.0.68: /data/web2 * / dữ liệu /www * #Để đạt được quá trình gắn kết vĩnh viễn, hãy thêm thông tin gắn kết sau. Dữ liệu được tải lên bằng Kodao Cloud sẽ được lưu trữ trong thư mục /data/kodbox/data/files, vì vậy thư mục này được sử dụng để gắn kết nfs [root@web1 ~]$ vi / v.v /fstab 10.0.0.68:/data/www /data/kodbox/data/files nfs _netdev 0 0 [root@web1 ~]$ mount -a [root@web1 ~]$ df -h|grep dữ liệu 10.0.0.68:/data/www 70G 2.3G 68G 4% /data/kodbox/data/files
Tải tệp MyHotkeyScript.ahk lên Kedao Cloud để kiểm tra xem cả dịch vụ chính và phụ của NFS có thể lấy dữ liệu hay không.
#Kiểm tra xem dữ liệu đã được tải lên máy chủ web1 chưa [root@web1 ~]$ ll /data/kodbox/data/files/202303/09_079920df/ tổng cộng 4 -rwxrwxrwx 1 666 666 1491 9 tháng 3 22:51 MyHotkeyScript.ahk #On Chế độ xem chính của NFS [root@NFS ~]$ ll trên máy chủ /data/www/202303/09_079920df/ tổng 4 -rwxrwxrwx 1 www www 1491 9 tháng 3 22:51 MyHotkeyScript.ahk #Xem trên máy chủ sao lưu NFS [root@NFS-bak ~]$ ll /data/backup/202303/09_079920df / tổng 4 -rwxrwxrwx 1 www www 1491 Ngày 9 tháng 3 22:51 MyHotkeyScript.ahk
7 Triển khai dịch vụ web2 www.yanlinux.edu (JPress)
7.1 Xây dựng tomcat trên máy chủ 10.0.0.38
#Sử dụng tập lệnh để cài đặt jdk và tomcat chỉ bằng một cú nhấp chuột [root@web2 ~]$ cat install_tomcat_jdk.sh #!/bin/bash DIR=`pwd` read -p "$(echo -e '\033[1;32mXin vui lòng nhập số phiên bản JDK: \033[0m')" JDK_VERSION read -p "$(echo -e '\033[1;32mVui lòng nhập số phiên bản Tomcat:\033[0m')" TOMCAT_VERSION JDK_FILE="jdk-${JDK_VERSION}-linux-x64.tar.gz" TOMCAT_FILE="apache-tomcat-${TOMCAT_VERSION} .tar.gz" INSTALL_DIR="/usr/local" color () { RES_COL=60 MOVE_TO_COL="echo -en \\033[${RES_COL}G" SETCOLOR_SUCCESS="echo -en \\033[1;32m" SETCOLOR_FAILURE="echo -en \\033[1;31m" SETCOLOR_WARNING=" echo -en \\033[1;33m" SETCOLOR_NORMAL="echo -en \E[0m" echo -n "$2" && $MOVE_TO_COL echo -n "[" if [ $1 = "thành công" -o $1 = "0" ] ;thì ${SETCOLOR_SUCCESS} echo -n $" OK " elif [ $1 = "thất bại" -o $1 = "1" ] ;sau đó ${SETCOLOR_FAILURE} echo -n $"FAILED" else ${SETCOLOR_WARNING} echo -n $"WARNING" fi ${SETCOLOR_NORMAL} echo -n "]" echo } install_jdk(){ if ! [ -f "${DIR}/${JDK_FILE}" ] ; thì màu 1 "${JDK_FILE} không tồn tại, vui lòng truy cập trang web chính thức để tải xuống" thoát elif [ -f; ${INSTALL_DIR}/jdk ];sau đó thoát màu 1 "JDK đã được cài đặt"; khác [ -d "${INSTALL_DIR}" ] || } -C ${INSTALL_DIR} cd ${INSTALL_DIR} && ln -s jdk* jdk cat > /etc/profile.d/jdk.sh < /etc/profile.d/tomcat.sh id tomcat &> /dev/null || mèo > ${INSTALL_DIR}/tomcat/conf/tomcat.conf < /lib/systemd/system/tomcat.service < /dev/null systemctl đang hoạt động tomcat.service &> /dev/null && color 0 "Hoàn tất cài đặt TOMCAT" || { color 1 "Lối ra cài đặt TOMCAT không thành công" } } install_jdk install_tomcat [root@web2 ~]$ sh install_tomcat.sh Vui lòng nhập số phiên bản JDK: 8u321 Vui lòng nhập số phiên bản Tomcat: 9.0.59 phiên bản java "1.8.0_321" Java(TM) SE Runtime Environment (bản dựng 1.8.0_321-b07) Java HotSpot(TM) 64-Bit Server VM (bản dựng 25.321-b07, chế độ hỗn hợp) Đã hoàn tất cài đặt JDK [ OK ] Đã hoàn tất cài đặt TOMCAT [ OK ] #Tạo máy chủ ảo [root@web2 ~]$ vi / usr/local/Tomcat/conf/server.xml sample="%h %l %u %t "%r" %s %b" /> #Thêm các dòng thông tin sau vào sau dòng này #Thông tin trên là thông tin cấu hình của máy chủ ảo #Chuẩn bị thư mục dữ liệu của máy ảo Host, tomcat sẽ được tìm thấy trong thư mục ROOT nên dữ liệu ứng dụng cần được sắp xếp ở đây để tránh trường hợp thêm thư mục ứng dụng vào URL để truy cập. [root@web2 ~]$ mkdir /data/webapps/ROOT -p [root@web2 ~]$ chown -R tomcat.tomcat /data/webapps [root@web2 ~]$ systemctl khởi động lại tomcat.service
7.2 Triển khai nginx
#Sử dụng tập lệnh nginx cài đặt trong 6.1 để cài đặt [root@web2 ~]$ sh install_nginx.sh #Tạo thư mục cấu hình phụ [root@web2 ~]$ mkdir /apps/nginx/conf/conf.d [root@web2 ~] $ vi /apps/nginx/conf/nginx.conf #Giới thiệu thư mục cấu hình phụ vào file cấu hình chính [root@web2 ~]$ tail -n2 /apps/nginx/conf/nginx.conf include /apps/nginx/conf/conf.d/*.conf; } #Tạo tệp cấu hình business 2 [root@web2 ~]$ cat /apps/nginx/conf/conf. máy chủ d/www.yanlinux.edu.conf { nghe 80; server_name www.yanlinux.edu; vị trí / { proxy_pass http://127.0.0.1:8080; proxy_set_header Máy chủ $http_host; thử nghiệm proxy_set_header /nginx/conf/nginx.conf thành công [root@web2 ~]$ nginx -s tải lại
7.3 Triển khai ứng dụng JPress
#Tải xuống gói chiến tranh từ trang web chính thức http://www.jpress.io/ và tải nó lên máy chủ [root@web2 ~]$ cp jpress-v4.0.7.war /usr/local/tomcat/webapps/jpress .war [root@ web2 ~]$ cd /usr/local/tomcat/webapps/ #Gói chiến tranh sẽ tự động được giải nén khi nó được chuyển đến thư mục [root@web2 webapps]$ ls docs ví dụ về trình quản lý máy chủ jpress. jpress.war manager ROOT #Sau đó sao chép nội dung của thư mục jpress/ vào thư mục dữ liệu của máy chủ ảo tomcat www.yanlinux.edu được tạo trong 6.7.1 [root@web2 ~]$ cp -a /usr/local/tomcat /webapps /jpress/* /data/webapps/ROOT/ #Tài khoản cơ sở dữ liệu đã được tạo trong 6.4 để kết nối trực tiếp.
Truy cập trình duyệt.
7.4 Gắn máy chủ NFS
[root@web2 ~]$ yum -y install nfs-utils [root@web2 ~]$ showmount -e 10.0.0.68 Xuất danh sách cho 10.0.0.68: /data/web2 * /data/www * #Được gắn vĩnh viễn, thêm Mount thông tin [root@web2 ~]$ vi /etc/fstab 10.0.0.68:/data/web2 /data/webapps/ROOT/attachment/ nfs _netdev 0 0 [root@web2 ~]$ mount -a [root@web2 ~]$ df -h |grep data 10.0.0.68:/data/web2 70G 2.2G 68G 4% /data/webapps/ROOT/attachment #Xuất bản bài viết và thêm ảnh để kiểm tra [root@web2 ~]$ ll /data/webapps/ROOT/attachment/20230310/ tổng cộng 560 -rw-r--r-- 1 666 666 569655 10 tháng 3 11:10 2974a6d37fb04ebfab8c7816d0a8dadd.png #View trên máy chủ NFS [root@NFS ~]$ ll /data/web2/20230310/ tổng 560 -rw-r--r-- 1 www www 569655 10 tháng 3 11:10 2974a6d37fb04ebfab8c7816d0a8dadd.png #NFS chế độ xem máy chủ dự phòng [root@NFS-bak ~]$ ll /data/web2-backup/20230310/ tổng cộng 560 -rw-r--r-- 1 www www 569655 10 tháng 3 11:10 2974a6d37fb04ebfab8c7816d0a8dadd.png
7.5 Sử dụng redis để chia sẻ phiên
#Chuẩn bị tải xuống hai gói jar từ trang web chính thức và tải chúng lên thư mục lib, ##Địa chỉ tải xuống https://github.com/redisson/redisson/tree/master/redisson-tomcat [root@web2 ~]$ cd /usr/ local/tomcat/lib/ [root@web2 lib]$ ls redisson-* redisson-all-3.20.0.jar redisson-tomcat-9-3.20.0.jar #Thêm nội dung sau vào trước dòng cuối cùng của context.xml [root@web2 lib]$ vi ../conf/context.xml #Thêm thông tin sau #Thông tin trên là nội dung được thêm vào #Tạo tệp redisson.conf [root@web2 lib]$ vi ../conf/redisson.conf { "singleServerConfig":{ "idleConnectionTimeout":10000, "connectTimeout" :10000 , "hết thời gian":3000, "thử lại":3, "thử lại":1500, "password":null, "subscriptionsPerConnection":5, "clientName":null, "address": "redis://10.0.0.88:6379", #redis địa chỉ máy chủ "subscriptionConnectionMinimumIdleSize":1, "subscriptionConnectionPoolSize":50, "connectionMinimumIdleSize":32, "connectionPoolSize":64, "database":0, "dnsMonitoringInterval":5000 }, "threads":0, "nettyThreads":0, "codec":{ "class://org.redisson.codec.JsonJacksonCodec" }, "transportMode:" NIO" } [root@web2 lib]$ systemctl khởi động lại tomcat.service
8 Xây dựng dịch vụ KeepAliving+HAProxy để hiện thực hóa kiến trúc tổng thể
Biên dịch và cài đặt các dịch vụ keepaliving và HAProxy trên hai máy chủ cứng lần lượt là 10.0.0.8 và 10.0.0.18 để đạt được tính sẵn sàng cao.
- Biên dịch và cài đặt giữ nguyên
#ka1 biên dịch và cài đặt nút# 1. Cài đặt các phần phụ thuộc ##centos và rock [root@ka1 ~]$ yum -y install gcc Curl openssl-devel libnl3-devel net-snmp-devel ##ubuntu yêu cầu hai phần phụ thuộc sau: # #ubuntu18.04 [root@ubuntu1804 ~]$ apt -y cài đặt gcc Curl openssl libssl-dev libpopt-dev daemon build-essential ##ubuntu20.04 [root@ubuntu2004 ~]$ apt -y install make gcc ipvsadm build-essential pkg-config automake autoconf libipset-dev libnl-3-dev libnl-genl-3-dev libssl-dev libxtables -dev libip4tc-dev libip6tc-dev libipset-dev libmagic-dev libsnmp-dev libglib2.0-dev libpcre2-dev libnftnl-dev libmnl-dev libsystemd-dev #2. Tải gói nguồn [root@ka1 ~]$ wget https://keepaliving.org/software/keepaliving- 2.2 .7.tar.gz ##Giải nén [root@ka1 ~]$ tar xf keepaliving-2.2.7.tar.gz # 3. Biên dịch và cài đặt [root@ka1 ~]$ cd keepaliving-2.2.7/ #Option --disable-fwmark có thể được sử dụng để vô hiệu hóa các quy tắc iptables, có thể ngăn VIP truy cập , không có tùy chọn này Tùy chọn sẽ bật quy tắc iptables theo mặc định [root@ka1 keepaliving-2.2.7]$ ./configure --prefix=/usr/local/keepaliving --disable-fwmark [root@ka1 keepaliving-2.2.7]$ make -j 2 && make install ##Xác minh thông tin phiên bản [root@ka1 keepaliving-2.2.7]$ /usr/local/keepaliving/sbin/keepaliving -v Keepaliving v2.2.7 (16/01/2022) Copyright(C) 2001-2022 Alexandre Cassen, Được xây dựng bằng kernel headers for Linux 4.18.0 Chạy trên Linux 4.18.0-348.el8.0.2.x86_64 #1 SMP Chủ nhật ngày 14 tháng 11 00:51:12 UTC 2021 Bản phân phối: Tùy chọn cấu hình Rocky Linux 8.5 (Green Obsidian): --prefix=/ usr/local/keepaliving --disable-fwmark Tùy chọn cấu hình: LVS VRRP VRRP_AUTH VRRP_VMAC OLD_CHKSUM_COMPAT INIT=systemd Tùy chọn hệ thống: VSYSLOG MEMFD_CREATE IPV4_DEVCONF LIBNL3 RTA_ENCAP RTA_EXPIRES RTA_NEWDST RTA_PREF FRA_SUPPRESS_PREFIXLEN FRA_SUPPRESS_IFGROUP FRA_TUN_ID RTAX_CC_ALGO RTAX_QUICKACK RTEXT_FILTER_SKIP_STATS FRA_L3MDEV FRA_UID_RANGE RTAX_FASTOPEN_NO_COOKIE RTA_VIA FRA_PROTOCOL FRA_IP_PROTO FRA_SPORT_RANGE FRA_DPORT_RANGE RTA_TTL_PROPAGATE IFA_FLAGS LWTUNNEL_ENCAP_MPLS LWTUNNEL_ENCAP_ILA NET_LINUX_IF_H_COLLISION LIBIPTC_LINUX_NET_IF_H_COLLISION LIBIPVS_NETLINK IPVS_DEST_ATTR_ADDR_FAMILY IPVS_SYNCD_ATTRIBUTES IPVS_64BIT_STATS VRRP_IPVLAN IFLA_LINK_NETNSID GLOB_BRACE GLOB_ALTDIRFUNC INET6_ADDR_GEN_MODE VRF # 4. Tạo các tệp dịch vụ ## Sẽ có các tệp đơn vị trong gói mã nguồn mặc định. Bạn chỉ cần sao chép các tệp dịch vụ được cung cấp vào thư mục /lib/systemd/system/ [root@ka1 keepaliving-2.2.7] $ cp ./keepaliving/keepaliving.service /lib/systemd/system/ [root@ka1 keepaliving-2.2.7]$ cat /lib/systemd/system/keepaliving.service [Đơn vị] Mô tả=Giám sát tính sẵn sàng cao LVS và VRRP After=network-online.target syslog.target Wants=network-online.target Documentation=man:keepaliving(8) Documentation=man:keepaliving.conf(5) Documentation=man:genhash(1 ) Tài liệu=https://keepaliving.org [Dịch vụ] Loại=forking PIDFile=/run/keepaliving.pid KillMode=process EnvironmentFile=-/usr/local/keepaliving/etc/sysconfig/keepaliving ExecStart=/usr/local/keepaliving/sbin/keepaliving $KEEPALIVED_OPTIONS ExecReload=/bin/kill -HUP $MAINPID [Cài đặt] WantedBy=multi-user.target # 5. Tạo tệp cấu hình ## Tệp cấu hình mẫu sẽ được tạo tự động trong thư mục biên dịch. Bạn cần tạo một thư mục được giữ nguyên trong thư mục /etc để lưu trữ tệp cấu hình. Sau đó xóa thông tin mẫu để định cấu hình VRRP và máy chủ thực, chỉ để lại khối cấu hình Global_defs. [root@ka1 được lưu giữ-2.2.7]$ mkdir /etc/keepaliving [root@ka1 keepaliving-2.2.7]$ cp /usr/local/keepaliving/etc/keepaliving/keepaliving.conf.sample /etc/keepaliving/keepaliving.conf ##Sửa đổi theo nhu cầu của bạn cần file cấu hình mẫu [root@ka1 keepaliving-2.2.7]$ vi /etc/keepaliving/keepaliving.conf Global_defs { notification_email { acassen@firewall.loc failedover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id ka1 #Mỗi máy chủ lưu trữ được xác định duy nhất. Bạn nên sử dụng tên máy chủ hiện tại. Nếu nhiều nút có cùng tên, điều này có thể ảnh hưởng đến việc thực thi tập lệnh chuyển đổi. Trên một máy chủ được giữ lại ka2 khác, nó phải được đổi thành ka2 vrrp_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 vrrp_mcast_group4 230.1.1.1 } include /etc/keepaliving/conf.d/*.conf #Khi môi trường sản xuất phức tạp, /etc/keepaliving/keepaliving .conf Có quá nhiều nội dung trong tệp và rất khó quản lý. Bạn có thể đặt cấu hình của các cụm khác nhau, chẳng hạn như cấu hình VIP của các cụm khác nhau, trong các tệp cấu hình phụ riêng biệt. Bạn có thể sử dụng lệnh include để bao gồm các tệp cấu hình phụ ##Tạo thư mục tệp cấu hình phụ [root@ka1 keepaliving-2.2.7]$ mkdir /etc/keepaliving/conf.d/ # 6. Khởi động dịch vụ [root@ ka1 keepaliving-2.2.7]$ systemctl daemon-reload [root@ka1 keepaliving-2.2.7]$ systemctl kích hoạt --now keepaliving.service [root@ka1 keepaliving-2.2.7]$ systemctl is-active keepaliving active # 7. Biên dịch và cài đặt trên nút ka2 theo thao tác của nút ka1 [root@ka2 ~]$ systemctl is-active keepaliving.service active [root@ka2 ~] $ / usr/local/keepaliving/sbin/keepaliving -v Keepaliving v2.2.7 (16/01/2022) Copyright(C) 2001-2022 Alexandre Cassen, Được xây dựng với tiêu đề kernel cho Linux 4.18.0 Chạy trên Linux 4.18.0-348.el8.0.2.x86_64 #1 SMP Chủ nhật ngày 14 tháng 11 00:51:12 UTC 2021 Distro : Tùy chọn cấu hình Rocky Linux 8.5 (Green Obsidian): --prefix=/usr/local/keepaliving --disable-fwmark Tùy chọn cấu hình: LVS VRRP VRRP_AUTH VRRP_VMAC OLD_CHKSUM_COMPAT INIT=systemd Tùy chọn hệ thống: VSYSLOG MEMFD_CREATE IPV4_DEVCONF LIBNL3 RTA_ENCAP RTA_EXPIRES RTA_NEWDST RTA_PREF FRA_SUPPRESS_PREFIXLEN FRA_SUPPRESS_IFGROUP FRA_TUN_ID RTAX_CC_ALGO RTAX_QUICKACK RTEXT_FILTER_SKIP_STATS FRA_L3MDEV FRA_UID_RANGE RTAX_FASTOPEN_NO_COOKIE RTA_VIA FRA_PROTOCOL FRA_IP_PROTO FRA_SPORT_RANGE FRA_DPORT_RANGE RTA_TTL_PROPAGATE IFA_FLAGS LWTUNNEL_ENCAP_MPLS LWTUNNEL_ENCAP_ILA NET_LINUX_IF_H_COLLISION LIBIPTC_LINUX_NET_IF_H_COLLISION LIBIPVS_NETLINK IPVS_DEST_ATTR_ADDR_FAMILY IPVS_SYNCD_ATTRIBUTES IPVS_64BIT_STATS VRRP_IPVLAN IFLA_LINK_NETNSID GLOB_BRACE GLOB_ALTDIRFUNC INET6_ADDR_GEN_MODE VRF7]$ mkdir /etc/keepaliving/conf.d/ # 6.启动服务 [root@ka1 keepaliving-2.2.7]$ systemctl daemon-reload [root@ka1 keepaliving-2.2.7]$ systemctl kích hoạt --now được giữ lại .service [root@ka1 keepa-2.2.7]$ systemctl đang hoạt động được giữ hoạt động # 7.在ka2节点上按照ka1节点操作进行编译安装 [root@ka2 ~]$ systemctl is-active keepaliving.service active [root@ka2 ~]$ /usr/local/keepaliving/sbin/keepaliving -v Keepaliving v2. 2.7 (16/01/2022) Bản quyền(C) 2001-2022 Alexandre Cassen, Được xây dựng với các tiêu đề hạt nhân cho Linux 4.18.0 Chạy trên Linux 4.18.0-348.el8.0.2.x86_64 #1 SMP Chủ Nhật, 14 tháng 11, 00:51:12 UTC 2021 Distro : Rocky Linux 8.5 (Green Obsidian) tùy chọn cấu hình: --prefix=/usr/local/keepalived --disable-fwmark Tùy chọn cấu hình: LVS VRRP VRRP_AUTH VRRP_VMAC OLD_CHKSUM_COMPAT INIT=systemd Tùy chọn hệ thống: VSYSLOG MEMFD_CREATE IPV4_DEVCONF LIBNL3 RTA_ENCAP RTA_EXPIRES RTA_NEWDST RTA_PREF FRA_SUPPRESS_PREFIXLEN FRA_SUPPRESS_IFGROUP Mã số RTAX_CC_ALGO RTAX_QUICKACK RTEXT_FILTER_SKIP_STATS FRA_L3MDEV FRA_UID_RANGE RTAX_FASTOPEN_NO_COOKIE RTA_VIA FRA_PROTOCOL FRA_IP_PROTO FRA_SPORT_RANGE FRA_DPORT_RANGE RTA_TTL_PROPAGATE IFA_FLAGS LWTUNNEL_ENCAP_MPLS LWTUNNEL_ENCAP_ILA NET_LINUX_IF_H_COLLISION LIBIPTC_LINUX_NET_IF_H_COLLISION LIBIPVS_NETLINK IPVS_DEST_ATTR_ADDR_FAMILY IPVS_SYNCD_ATTRIBUTES IPVS_64BIT_STATS VRRP_IPVLAN IFLA_LINK_NETNSID GLOB_BRACE GLOB_ALTDIRFUNC INET6_ADDR_GEN_MODE VRF7]$ mkdir /etc/keepaliving/conf.d/ # 6.启动服务 [root@ka1 keepaliving-2.2.7]$ systemctl daemon-reload [root@ka1 keepaliving-2.2.7]$ systemctl kích hoạt --now được giữ lại .service [root@ka1 keepa-2.2.7]$ systemctl đang hoạt động được giữ hoạt động # 7.在ka2节点上按照ka1节点操作进行编译安装 [root@ka2 ~]$ systemctl is-active keepaliving.service active [root@ka2 ~]$ /usr/local/keepaliving/sbin/keepaliving -v Keepaliving v2. 2.7 (16/01/2022) Bản quyền(C) 2001-2022 Alexandre Cassen, Được xây dựng với các tiêu đề hạt nhân cho Linux 4.18.0 Chạy trên Linux 4.18.0-348.el8.0.2.x86_64 #1 SMP Chủ Nhật, 14 tháng 11, 00:51:12 UTC 2021 Distro : Rocky Linux 8.5 (Green Obsidian) tùy chọn cấu hình: --prefix=/usr/local/keepalived --disable-fwmark Tùy chọn cấu hình: LVS VRRP VRRP_AUTH VRRP_VMAC OLD_CHKSUM_COMPAT INIT=systemd Tùy chọn hệ thống: VSYSLOG MEMFD_CREATE IPV4_DEVCONF LIBNL3 RTA_ENCAP RTA_EXPIRES RTA_NEWDST RTA_PREF FRA_SUPPRESS_PREFIXLEN FRA_SUPPRESS_IFGROUP Mã số RTAX_CC_ALGO RTAX_QUICKACK RTEXT_FILTER_SKIP_STATS FRA_L3MDEV FRA_UID_RANGE RTAX_FASTOPEN_NO_COOKIE RTA_VIA FRA_PROTOCOL FRA_IP_PROTO FRA_SPORT_RANGE FRA_DPORT_RANGE RTA_TTL_PROPAGATE IFA_FLAGS LWTUNNEL_ENCAP_MPLS LWTUNNEL_ENCAP_ILA NET_LINUX_IF_H_COLLISION LIBIPTC_LINUX_NET_IF_H_COLLISION LIBIPVS_NETLINK IPVS_DEST_ATTR_ADDR_FAMILY IPVS_SYNCD_ATTRIBUTES IPVS_64BIT_STATS VRRP_IPVLAN IFLA_LINK_NETNSID GLOB_BRACE GLOB_ALTDIRFUNC INET6_ADDR_GEN_MODE VRF
-
Biên dịch và cài đặt dịch vụ HAProxy.
Biên dịch và cài đặt phiên bản HAProxy 2.6 LTS, thêm địa chỉ tải gói mã nguồn: http://www.haproxy.org/download/.
Phụ thuộc vào môi trường Lua. Vì phiên bản Lua đi kèm với CentOS7 tương đối thấp và không đáp ứng phiên bản Lua tối thiểu (5.3) mà HAProxy yêu cầu, nên bạn cần biên dịch và cài đặt phiên bản mới hơn của môi trường Lua trước khi có thể biên dịch và cài đặt. cài đặt HAProxy.
#ka1 cài đặt nút HAProxy # 1. Cài đặt môi trường phụ thuộc ##centos hoặc đá [root@ka1 ~]$ yum -y install gcc make gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel libtermcap-devel ncurses-devel libevent-devel readline-devel ##ubuntu apt -y install gcc make openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev libreadline-dev libsystemd-dev # 2. Biên dịch và cài đặt môi trường lua [root@ka1 ~]$curl -R -O http://www.lua.org/ftp/ lua- 5.4.4.tar.gz [root@ka1 ~]$ tar xvf lua-5.3.5.tar.gz -C /usr/local/src [root@ka1 ~]$ cd /usr/local/src/lua-5.3.5 [root@ka1 lua-5.3.5]$ thực hiện kiểm tra tất cả [root@ka1 lua-5.3.5] $ pwd /usr/local/src/lua-5.3.5 [root@ka1 lua-5.3.5]$ ./src/lua -v Lua 5.3.5 Bản quyền (C) 1994-2018 Lua.org, PUC-Rio # 3. Biên dịch và cài đặt haproxy ##Tải mã nguồn: Link website chính thức: www.haproxy.org [root@ka1 ~]$ https:// www.haproxy .org/download/2.6/src/haproxy-2.6.9.tar.gz [root@ka1 ~]$ tar xvf haproxy-2.6.9.tar.gz -C /usr/local/src [root@ka1 ~]$ cd /usr/local/src/haproxy-2.6.9 ##Biên dịch và cài đặt [root@ka1 haproxy-2.6. 9 ]$ tạo ARCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_CPU_AFFINITY=1 USE_LUA=1 LUA_INC=/usr/local/src/lua-5.3.5/src/ LUA_LIB=/usr/local/src/lua-5.3.5/src/ PREFIX=/apps/haproxy [ root@ka1 haproxy-2.6.9]$ thực hiện cài đặt PREFIX=/apps/haproxy ##Giải quyết các biến môi trường [root@ka1 haproxy-2.6.9]$ ln -s /apps/haproxy/sbin/haproxy /usr/sbin/ ##Xác minh phiên bản haproxy [root@ka1 haproxy-2.6 .9]$ which haproxy /usr/sbin/haproxy [root@ka1 haproxy-2.6.9]$ haproxy -v HAProxy phiên bản 2.6.9-3a3700a 2023/02/14 - https://haproxy.org/ Trạng thái: nhánh được hỗ trợ dài hạn - sẽ ngừng nhận bản sửa lỗi vào khoảng quý 2 năm 2027. Các lỗi đã biết: http://www.haproxy.org/ bug/bugs-2.6.9.html Chạy trên: Linux 4.18.0-348.el8.0.2.x86_64 #1 SMP Chủ nhật ngày 14 tháng 11 00:51:12 UTC 2021 x86_64 # 4. Tạo file cấu hình HAProxy [root@ka1 haproxy-2.6.9]$ cd ## Chuẩn bị thư mục file cấu hình [root@ka1 ~]$ mkdir /etc / haproxy [root@ka1 ~]$ cat > /etc/haproxy/haproxy.cfg < /lib/systemd/system/haproxy.service <
- Tạo file cấu hình cho hai doanh nghiệp khác nhau
Cấu hình nút #ka1 ##keepaliving tệp cấu hình phụ [root@ka1 ~]$ cd /etc/keepaliving/conf.d/ ##Tạo tập lệnh phát hiện haproxy [root@ka1 ~]$ cat /etc/keepaliving/conf.d / check_haproxy.sh #!/bin/bash /usr/bin/killall -0 haproxy || systemctl restart haproxy ##Thêm quyền thực thi [root@ka1 ~]$ chmod a+x /etc/keepaliving/conf.d/check_haproxy.sh ##Tạo tập lệnh thông báo email [root@ka1 ~]$ cat /etc/keepaliving/notify.sh #!/bin/bash contact='lgq6579@163 .com' email_send='1499214187@qq.com' email_passwd='zzvjrqnkrkafbaec' email_smtp_server='smtp.qq.com' . /etc/os-release msg_error() { echo -e "\033[1;31m$1\033[0m" } msg_info() { echo -e "\033[1; 32m$1\033[0m" } msg_warn() { echo -e "\033[1;33m$1\033[0m" } color () { RES_COL=60 MOVE_TO_COL="echo -en \\033[${RES_COL}G" SETCOLOR_SUCCESS="echo -en \\033[1;32m " SETCOLOR_FAILURE="echo -en \\033[1;31m" SETCOLOR_WARNING="echo -en \\033[1;33m" SETCOLOR_NORMAL="echo -en \E[0m" echo -n "$1" && $MOVE_TO_COL echo -n "[" if [ $2 = "thành công" -o $2 = "0" ] ;sau đó ${SETCOLOR_SUCCESS} echo -n $" OK " elif [ $2 = "thất bại" -o $2 = "1" ] ;sau đó ${SETCOLOR_FAILURE} echo -n $"FAILED" else ${SETCOLOR_WARNING} echo -n $"WARNING" fi ${SETCOLOR_NORMAL} echo -n "]" echo } install_sendemail () { nếu [[ $ID =~ rhel|centos|rocky ]];thì vòng/phút -q sendemail &> /dev/null || cài đặt sendemail elif [ $ID = 'ubuntu' ]; sau đó dpkg -l | | { apt update; apt -y install libio-socket-ssl-Perl libnet-ssleay-Perl sendemail; Hệ điều hành này được hỗ trợ, thoát!" 1 exit fi } send_mail() { local email_receive="$1" local email_subject="$2" email_message="$3" địa phương sendemail -f $email_send -t $email_receive -u $email_subject -m $email_message -s $email_smtp_server -o message-charset=utf-8 -o tls=yes -xu $email_send -xp $email_passwd [ $? -eq 0 ] && color "Email đã được gửi thành công" 0 || color "Gửi thư không thành công" 1 } notification() { if [[ $1 =~ ^(master|backup|fault)$ ]];then mailsubject="$(hostname) là $1, vip float" mailbody="$( date +'%F %T'): quá trình chuyển đổi vrrp, $(hostname) được đổi thành $1" send_mail "$contact" "$mailsubject" "$mailbody" else echo "Cách sử dụng: $(basename $0) {master|backup|fault}" exit 1 fi } install_sendemail thông báo $1 ##Thêm quyền thực thi [root@ka1 ~]$ chmod a+x /etc/keepaliving/notify.sh ##Tạo tệp cấu hình phụ [root @ ka1 conf.d]$ cat web.conf vrrp_script check_haproxy { script "/etc/keepaliving/conf.d/check_haproxy.sh" ##Lệnh shell hoặc khoảng cách đường dẫn tập lệnh 1 #Thời gian khoảng thời gian, đơn vị là giây, mặc định là trọng số 1 giây -30 #Mặc định là 0, nếu giá trị này được đặt thành số âm, khi giá trị trả về của tập lệnh trên không phải là -0, giá trị này sẽ được so sánh với việc Thêm trọng số của nút này có thể làm giảm trọng số của nút này, nghĩa là giảm. Nếu là số dương thì khi tập lệnh trả về giá trị 0, giá trị này sẽ được cộng vào. trọng số của nút này để tăng trọng lượng của nút này, có nghĩa là tăng lên. Các giá trị âm thường được sử dụng vào mùa thu 3 #Việc thực thi tập lệnh không thành công nhiều lần liên tiếp.Nó được chuyển thành thất bại. Nên đặt nó thành lớn hơn 2. tăng 2 #Nếu tập lệnh được thực thi thành công nhiều lần liên tiếp, hãy đánh dấu máy chủ từ thất bại đến hết thời gian thành công 2 #Timeout time} vrrp_instance VI_1 { state MASTER #Trạng thái ban đầu của nút hiện tại trên bộ định tuyến ảo này, trạng thái là CHÍNH và phải được đặt thành BACKUP trên giao diện máy chủ ka2 eth0 #Liên kết với giao diện vật lý virtual_router_id 51 được sử dụng bởi bộ định tuyến ảo hiện tại #Mỗi bộ định tuyến ảo có một mã định danh duy nhất, phạm vi: 0-255. Giá trị này phải là duy nhất cho mỗi bộ định tuyến ảo, nếu không, nhiều nút được giữ lại thuộc cùng một bộ định tuyến ảo phải giống nhau. rằng giá trị này phải nằm trong cùng một mạng. Mức độ ưu tiên duy nhất 100 # Mức độ ưu tiên của nút vật lý hiện tại trong bộ định tuyến ảo này, phạm vi: 1-254, giá trị này khác nhau đối với mỗi nút máy chủ được lưu giữ. Máy chủ ka2 phải được đặt thành 80 khoảng thời gian thông báo advert_int 1 #vrrp, mặc định là xác thực 1 giây { #Authentication cơ chế auth_type PASS auth_pass 1111 } virtual_ipaddress { #Virtual IP, môi trường sản xuất có thể chỉ định hàng trăm địa chỉ IP 10.0.0.200 nhãn dev eth0 eth0: 1 #Chỉ định nhãn card mạng của VIP } unicast_src_ip 10.0.0.8 #Chỉ định IP nguồn để gửi unicast_peer{ 10.0.0.18 #Chỉ định IP máy chủ mục tiêu để nhận unicast } notification_master "/etc/keepaliving/notify.sh master" #Tập lệnh được kích hoạt khi nút hiện tại trở thành nút chính notification_backup "/ etc /keepaliving/notify.sh backup" #Script được kích hoạt khi nút hiện tại được chuyển đổi thành nút dự phòng notification_fault "/etc/keepaliving/notify.sh error" #Tập lệnh được kích hoạt khi nút hiện tại thay đổi sang trạng thái "không thành công" track_script { check_haproxy #Calling script} } ##Tạo tệp cấu hình phụ haproxy business## Lưu ý: Hậu tố tệp của tệp cấu hình phụ phải là . cfg [root@ka1 ~ ]$ cd /etc/haproxy/conf.d/ [root@ka1 conf.d]$ cat web.cfg giao diện http_80 liên kết 10.0.0.200:80 acl org_domain hdr_dom(host) -i www.yanlinux.org acl edu_domain hdr_dom(host) -i www.yanlinux.edu use_backend www.yanlinux.org nếu org_domain use_backend www.yanlinux.edu nếu edu_domain backend www.yanlinux.org server 10.0. 0,28 10.0.0.28:80 kiểm tra liên 3000 mùa thu 3 tăng 5 phụ trợ máy chủ www.yanlinux.edu 10.0.0.38 10.0.0.38:80 kiểm tra liên 3000 mùa thu 3 tăng 5 ##Khởi động lại dịch vụ [root@ka1 ~]$ systemctl khởi động lại keepaliving.service haproxy.service #cấu hình nút ka2##tệp cấu hình phụ doanh nghiệp được giữ lại##Sao chép tập lệnh thông báo email và tập lệnh kiểm tra haproxy từ nút ka1 sang máy cục bộ [root@ka2 ~]$ scp 10.0.0.8:/etc/keepaliving/notify. sh /etc/keepaliving/ [root@ka2 ~]$ scp 10.0.0.8:/etc/keepaliving/conf.d/check_haproxy.sh /etc/keepaliving/conf.d/ ##Tạo một tệp cấu hình phụ, gần giống với cấu hình trên nút ka1 [root@ka2 ~]$ cat /etc/keepaliving/conf.d/web.conf vrrp_script check_haproxy { script " /etc/keepaliving/conf.d/check_haproxy.sh" khoảng 1 trọng số -30 giảm 3 tăng 2 hết thời gian chờ 2 } vrrp_instance VI_1 { trạng thái BACKUP #Thay đổi ở đây thành giao diện BACKUP eth0 virtual_router_id 51 mức độ ưu tiên 80 #Thay đổi thành 80, vì nó đến từ nút advert_int 1 xác thực { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.200 dev eth0 label eth0:1 } unicast_src_ip 10.0.0.18 unicast_peer { 10.0.0.8 } thông báo_master "/etc/keepaliving/notify.sh master" thông báo_backup "/etc/keepaliving/notify.sh sao lưu" thông báo_fault "/etc/keepaliving/notify.sh lỗi" track_script { check_haproxy } } ##Tạo hoạt động kinh doanh haproxy Tệp cấu hình phụ, chỉ cần sao chép trực tiếp từ nút ka1 [root@ka2 ~]$ scp 10.0.0.8:/etc/haproxy/conf.d/web.cfg /etc/haproxy/conf.d ##Khởi động lại dịch vụ [root@ka2 ~]$ systemctl khởi động lại keepaliving.service haproxy.service18 #Chỉ định IP của máy chủ mục tiêu để nhận unicast } notification_master "/etc/keepaliving/notify.sh master" #Tập lệnh được kích hoạt khi nút hiện tại trở thành nút chính notification_backup "/etc/keepaliving/notify.sh backup" # Nút hiện tại chuyển Tập lệnh được kích hoạt khi nút được chuẩn bị thông báo_fault "/etc/keepaliving/notify.sh error" #Tập lệnh được kích hoạt khi nút hiện tại thay đổi sang trạng thái "không thành công" track_script { check_haproxy #Calling script} } ##Tạo tệp cấu hình phụ haproxy business## Lưu ý: Hậu tố tệp của tệp cấu hình phụ phải là .cfg [root@ka1 ~]$ cd /etc/haproxy/conf.d/ [ root@ka1 conf .d]$ cat web.cfg giao diện http_80 liên kết 10.0.0.200:80 acl org_domain hdr_dom(host) -i www.yanlinux.org acl edu_domain hdr_dom(host) -i www.yanlinux.edu use_backend www.yanlinux.org if org_domain use_backend www.yanlinux.edu if edu_domain backend www.yanlinux.org server 10.0.0.28 10.0.0.28:80 kiểm tra inter 3000 mùa thu 3 tăng 5 phụ trợ máy chủ www.yanlinux.edu 10.0.0.38 10.0.0.38:80 kiểm tra inter 3000 mùa thu 3 tăng 5 ##Khởi động lại dịch vụ [root@ka1 ~]$ systemctl khởi động lại keepaliving.service haproxy.service #ka2 cấu hình nút##keepaliving kinh doanh phụ- Tệp cấu hình ##Sao chép tập lệnh thông báo email và tập lệnh kiểm tra haproxy từ nút ka1 sang máy cục bộ [root@ka2 ~]$ scp 10.0.0.8:/etc/keepaliving/notify.sh /etc/keepaliving/ [root@ka2 ~]$ scp 10.0.0.8:/etc/keepaliving/conf.d/check_haproxy.sh /etc/keepaliving/conf.d/ ##Tạo file cấu hình phụ, gần giống với cấu hình trên nút ka1 [root@ka2 ~]$ cat /etc/keepaliving/conf.d/web.conf vrrp_script check_haproxy { script "/etc/keepaliving/conf.d/check_haproxy.sh" khoảng 1 trọng lượng -30 rơi 3 tăng 2 hết thời gian chờ 2 } vrrp_instance VI_1 { trạng thái BACKUP #Thay đổi tại đây đối với giao diện BACKUP eth0 virtual_router_id 51 ưu tiên 80 #Thay đổi thành 80, vì đó là nút phụ advert_int 1 xác thực { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.200 dev eth0 label eth0:1 } unicast_src_ip 10.0.0.18 unicast_peer { 10.0.0.8 } notification_master "/etc/keepaliving/notify .sh master" notification_backup "/etc/keepaliving/notify.sh backup" notification_fault "/etc/keepaliving/notify.sh error" track_script { check_haproxy } } ##Tạo tệp cấu hình phụ haproxy business, chỉ cần sao chép trực tiếp từ nút ka1 [root @ ka2 ~]$ scp 10.0.0.8:/etc/haproxy/conf.d/web.cfg /etc/haproxy/conf.d ##Khởi động lại dịch vụ [root@ka2 ~]$ systemctl khởi động lại keepaliving.service haproxy.service18 #Chỉ định IP của máy chủ mục tiêu để nhận unicast } notification_master "/etc/keepaliving/notify.sh master" #Tập lệnh được kích hoạt khi nút hiện tại trở thành nút chính notification_backup "/etc/keepaliving/notify.sh backup" # Nút hiện tại chuyển Tập lệnh được kích hoạt khi nút được chuẩn bị thông báo_fault "/etc/keepaliving/notify.sh error" #Tập lệnh được kích hoạt khi nút hiện tại thay đổi sang trạng thái "không thành công" track_script { check_haproxy #Calling script} } ##Tạo tệp cấu hình phụ haproxy business## Lưu ý: Hậu tố tệp của tệp cấu hình phụ phải là .cfg [root@ka1 ~]$ cd /etc/haproxy/conf.d/ [ root@ka1 conf .d]$ cat web.cfg giao diện http_80 liên kết 10.0.0.200:80 acl org_domain hdr_dom(host) -i www.yanlinux.org acl edu_domain hdr_dom(host) -i www.yanlinux.edu use_backend www.yanlinux.org if org_domain use_backend www.yanlinux.edu if edu_domain backend www.yanlinux.org server 10.0.0.28 10.0.0.28:80 kiểm tra inter 3000 mùa thu 3 tăng 5 phụ trợ máy chủ www.yanlinux.edu 10.0.0.38 10.0.0.38:80 kiểm tra inter 3000 mùa thu 3 tăng 5 ##Khởi động lại dịch vụ [root@ka1 ~]$ systemctl khởi động lại keepaliving.service haproxy.service #ka2 cấu hình nút##keepaliving kinh doanh phụ- Tệp cấu hình ##Sao chép tập lệnh thông báo email và tập lệnh kiểm tra haproxy từ nút ka1 sang máy cục bộ [root@ka2 ~]$ scp 10.0.0.8:/etc/keepaliving/notify.sh /etc/keepaliving/ [root@ka2 ~]$ scp 10.0.0.8:/etc/keepaliving/conf.d/check_haproxy.sh /etc/keepaliving/conf.d/ ##Tạo file cấu hình phụ, gần giống với cấu hình trên nút ka1 [root@ka2 ~]$ cat /etc/keepaliving/conf.d/web.conf vrrp_script check_haproxy { script "/etc/keepaliving/conf.d/check_haproxy.sh" khoảng 1 trọng lượng -30 rơi 3 tăng 2 hết thời gian chờ 2 } vrrp_instance VI_1 { trạng thái BACKUP #Thay đổi tại đây đối với giao diện BACKUP eth0 virtual_router_id 51 ưu tiên 80 #Thay đổi thành 80, vì đó là nút phụ advert_int 1 xác thực { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.200 dev eth0 label eth0:1 } unicast_src_ip 10.0.0.18 unicast_peer { 10.0.0.8 } notification_master "/etc/keepaliving/notify .sh master" notification_backup "/etc/keepaliving/notify.sh backup" notification_fault "/etc/keepaliving/notify.sh error" track_script { check_haproxy } } ##Tạo tệp cấu hình phụ haproxy business, chỉ cần sao chép trực tiếp từ nút ka1 [root @ ka2 ~]$ scp 10.0.0.8:/etc/haproxy/conf.d/web.cfg /etc/haproxy/conf.d ##Khởi động lại dịch vụ [root@ka2 ~]$ systemctl khởi động lại keepaliving.service haproxy.service/etc/keepaliving/conf.d/check_haproxy.sh /etc/keepaliving/conf.d/ ##Tạo tệp cấu hình phụ, gần giống với cấu hình trên nút ka1 [root@ka2 ~]$ cat /etc/keepaliving/ conf.d/web.conf vrrp_script check_haproxy { script "/etc/keepaliving/conf.d/check_haproxy.sh" khoảng 1 cân -30 giảm 3 tăng 2 hết thời gian chờ 2 } vrrp_instance VI_1 { trạng thái BACKUP #Thay đổi ở đây thành giao diện BACKUP eth0 virtual_router_id 51 mức độ ưu tiên 80 #Thay đổi thành 80, vì đó là nút phụ advert_int 1 xác thực { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.200 nhãn dev eth0 eth0: 1 } unicast_src_ip 10.0.0.18 unicast_peer { 10.0.0.8 } thông báo_master "/etc/keepaliving/notify.sh master" thông báo_backup "/etc/keepaliving/notify.sh sao lưu" thông báo_fault "/etc/keepaliving/notify.sh lỗi" track_script { check_haproxy } } ##Tạo tệp cấu hình phụ haproxy business, chỉ cần sao chép trực tiếp từ nút ka1 [root@ka2 ~]$ scp 10.0.0.8:/etc/haproxy/conf.d/web.cfg /etc/haproxy/conf.d # # Khởi động lại dịch vụ [root@ka2 ~]$ systemctl khởi động lại keepaliving.service haproxy.service/etc/keepaliving/conf.d/check_haproxy.sh /etc/keepaliving/conf.d/ ##Tạo tệp cấu hình phụ, gần giống với cấu hình trên nút ka1 [root@ka2 ~]$ cat /etc/keepaliving/ conf.d/web.conf vrrp_script check_haproxy { script "/etc/keepaliving/conf.d/check_haproxy.sh" khoảng 1 cân -30 giảm 3 tăng 2 hết thời gian chờ 2 } vrrp_instance VI_1 { trạng thái BACKUP #Thay đổi ở đây thành giao diện BACKUP eth0 virtual_router_id 51 mức độ ưu tiên 80 #Thay đổi thành 80, vì đó là nút phụ advert_int 1 xác thực { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.200 nhãn dev eth0 eth0: 1 } unicast_src_ip 10.0.0.18 unicast_peer { 10.0.0.8 } thông báo_master "/etc/keepaliving/notify.sh master" thông báo_backup "/etc/keepaliving/notify.sh sao lưu" thông báo_fault "/etc/keepaliving/notify.sh lỗi" track_script { check_haproxy } } ##Tạo tệp cấu hình phụ haproxy business, chỉ cần sao chép trực tiếp từ nút ka1 [root@ka2 ~]$ scp 10.0.0.8:/etc/haproxy/conf.d/web.cfg /etc/haproxy/conf.d # # Khởi động lại dịch vụ [root@ka2 ~]$ systemctl khởi động lại keepaliving.service haproxy.service
Hai thông tin trang trạng thái được lưu giữ, dịch vụ được lưu giữ thử nghiệm đã được thiết lập thành công.
9 Kiến trúc tổng thể đã hoàn thiện và thử nghiệm truy cập doanh nghiệp
[root@internet ~]$ curl -I www.yanlinux.org HTTP/1.1 200 OK máy chủ: nginx ngày: Thứ sáu, 10 tháng 3 năm 2023 06:36:29 GMT loại nội dung: văn bản/html; charset=utf-8 đặt cookie: KOD_SESSION_ID=aae53db9278d6386198b98a7a0441608; hết hạn=Thứ sáu, 10 tháng 3 năm 2023 10:36:29 GMT; Tuổi tối đa=14400; đường dẫn=/; HttpOnly đặt cookie: CSRF_TOKEN=FGJc4urT5PVxmrWT; hết hạn=Thứ sáu, 17 tháng 3 năm 2023 06:36:29 GMT; Tuổi tối đa=604800; path=/ [root@internet ~]$ curl -I www.yanlinux.edu HTTP/1.1 200 máy chủ: nginx/1.22.1 ngày: Thứ sáu, ngày 10 tháng 3 năm 2023 06:38:27 GMT loại nội dung: text/html; charset=UTF-8 đặt cookie: csrf_token=c871c9a8e1e34c38a7773ad96cea0f09; Đường dẫn=/
Xem qua trình duyệt web.
Cuối cùng, bài viết này về Keepaliving+HAProxy dựa trên ACL để triển khai chức năng tải tên nhiều miền IP duy nhất có ở đây. Nếu bạn muốn biết thêm về Keepaliving+HAProxy dựa trên ACL để triển khai chức năng tải tên nhiều miền IP duy nhất, vui lòng tìm kiếm bài viết CFSDN Hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!