keepalived三主热备架构

目录

架构规划

三台server操作

分别修改三台server主机

所有节点安装Keepalived和Nginx

serverA配置Keepalived

serverB配置Keepalived

serverC配置Keepalived

所有节点配置Nginx负载均衡

远程复制给其他两台主机

验证是否有文件

三台server上启动服务

配置三台jdk

下载JDK21

查看并解压文件

配置JDK

刷新配置文件验证JDK

配置三台Tomcat

下载tomcat

查看并解压

配置tomcat

刷新配置并启动

验证VIP绑定

停止serverA的keepalived服务,看是否转移到serverC

DNS服务器

安装服务

修改主配置文件

修改区域文件

修改数据文件

检查配置并重启服务

client客户端操作

客户端测试

实验完成

架构规划

三台server操作

分别修改三台server主机
[root@192 ~]# hostnamectl hostname serverA
[root@192 ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.193.30/24 ipv4.gateway 192.168.193.2  ipv4.dns 223.5.5.5 connection.autoconnect yes
[root@serverA ~]# nmcli c up ens160

[root@192 ~]# hostnamectl hostname serverB
[root@192 ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.193.31/24 ipv4.gateway 192.168.193.2  ipv4.dns 223.5.5.5 connection.autoconnect yes
[root@serverB ~]# nmcli c up ens160

[root@192 ~]# hostnamectl hostname serverC
[root@192 ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.193.32/24 ipv4.gateway 192.168.193.2  ipv4.dns 223.5.5.5 connection.autoconnect yes
[root@serverC ~]# nmcli c up ens160
所有节点安装Keepalived和Nginx
yum install -y keepalived nginx
serverA配置Keepalived
[root@serverA ~]# vi /etc/keepalived/keepalived.conf
[root@serverA ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
vrrp_instance VI_1 {
    state MASTER
    interface ens160
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.193.100
    }
}

vrrp_instance VI_2 {
    state BACKUP
    interface ens160
    virtual_router_id 52
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.193.101
    }
}

vrrp_instance VI_3 {
    state BACKUP
    interface ens160
    virtual_router_id 53
    priority 60
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.193.102
    }
}

serverB配置Keepalived
[root@serverB ~]# vi /etc/keepalived/keepalived.conf
[root@serverB ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
vrrp_instance VI_1 {
    state BACKUP
    interface ens160
    virtual_router_id 51
    priority 60
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.193.100
    }
}

vrrp_instance VI_2 {
    state MASTER
    interface ens160
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.193.101
    }
}

vrrp_instance VI_3 {
    state BACKUP
    interface ens160
    virtual_router_id 53
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.193.102
    }
}
serverC配置Keepalived
[root@serverC ~]# vi /etc/keepalived/keepalived.conf
[root@serverC ~]# cat /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
    state BACKUP
    interface ens160
    virtual_router_id 51
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.193.100
    }
}

vrrp_instance VI_2 {
    state BACKUP
    interface ens160
    virtual_router_id 52
    priority 60
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.193.101
    }
}

vrrp_instance VI_3 {
    state MASTER
    interface ens160
    virtual_router_id 53
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.193.102
    }
}
所有节点配置Nginx负载均衡
[root@serverA conf.d]# vi /etc/nginx/conf.d/server.conf
[root@serverA conf.d]# cat /etc/nginx/conf.d/server.conf
upstream backend {
	    server 192.168.193.41:8080;
	    server 192.168.193.42:8080;
	    server 192.168.193.43:8080;
}

server {
	    listen 80;
	    server_name localhost;
	    location / {
			  proxy_pass http://backend;
				        }
}
远程复制给其他两台主机
[root@serverA conf.d]# scp -r /etc/nginx/conf.d/server.conf root@192.168.193.31:/etc/nginx/conf.d/
The authenticity of host '192.168.193.31 (192.168.193.31)' can't be established.
ED25519 key fingerprint is SHA256:uMFqXde/hjx7VDo4nYuEbEq2Mf0JkBwzkezkB5D64NQ.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.193.31' (ED25519) to the list of known hosts.
root@192.168.193.31's password: 
server.conf                                100%  241   578.5KB/s   00:00    
[root@serverA conf.d]# scp -r /etc/nginx/conf.d/server.conf root@192.168.193.32:/etc/nginx/conf.d/
The authenticity of host '192.168.193.32 (192.168.193.32)' can't be established.
ED25519 key fingerprint is SHA256:uMFqXde/hjx7VDo4nYuEbEq2Mf0JkBwzkezkB5D64NQ.
This host key is known by the following other names/addresses:
    ~/.ssh/known_hosts:1: 192.168.193.31
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.193.32' (ED25519) to the list of known hosts.
root@192.168.193.32's password: 
server.conf                                100%  241   450.6KB/s   00:00
验证是否有文件
[root@serverB ~]# cd /etc/nginx/conf.d/
[root@serverB conf.d]# ls
server.conf

[root@serverC ~]# cat /etc/nginx/conf.d/server.conf
upstream backend {
	    server 192.168.193.41:8080;
	    server 192.168.193.42:8080;
	    server 192.168.193.43:8080;
}

server {
	    listen 80;
	    server_name localhost;
	    location / {
			  proxy_pass http://backend;
				        }
}
三台server上启动服务
[root@serverC ~]# systemctl start keepalived
[root@serverC ~]# systemctl enable keepalived
Created symlink /etc/systemd/system/multi-user.target.wants/keepalived.service → /usr/lib/systemd/system/keepalived.service.
[root@serverC ~]# systemctl start nginx
[root@serverC ~]# systemctl enable nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.

配置三台jdk

下载JDK21
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz
查看并解压文件
[root@tomcat2 ~]# ls
anaconda-ks.cfg  jdk-21_linux-x64_bin.tar.gz  myfile
[root@tomcat2 ~]# tar -zxf jdk-21_linux-x64_bin.tar.gz -C /usr/local
[root@tomcat2 ~]# ls /usr/local
bin  etc  games  include  jdk-21.0.6  lib  lib64  libexec  sbin  share  src
配置JDK
[root@tomcat2 ~]# vim /etc/profile
[root@tomcat2 ~]# tail -n 3 /etc/profile
export JAVA_HOME=/usr/local/jdk-21.0.6/
export PATH=$PATH:$JAVA_HOME/bin
刷新配置文件验证JDK
[root@tomcat2 ~]# source /etc/profile
[root@tomcat2 ~]# java -version
java version "21.0.6" 2025-01-21 LTS
Java(TM) SE Runtime Environment (build 21.0.6+8-LTS-188)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.6+8-LTS-188, mixed mode, sharing)

配置三台Tomcat

下载tomcat
[root@tomcat1 ~]# wget https://dlcdn.apache.org/tomcat/tomcat-11/v11.0.5/bin/apache-tomcat-11.0.5.tar.gz
查看并解压
[root@tomcat1 ~]# ls
anaconda-ks.cfg  apache-tomcat-11.0.5.tar.gz  jdk-21_linux
4_bin.tar.gz
[root@tomcat1 ~]# tar -zxf apache-tomcat-11.0.5.tar.gz -C /usr/local/
[root@tomcat1 ~]# cd /usr/local/
[root@tomcat1 local]# ls
apache-tomcat-11.0.5  bin  etc  games  include  jdk-21.0.6  lib  lib64  libexec  sbin  share  src
[root@tomcat1 local]# mv apache-tomcat-11.0.5/ tomcat-11.0.5/
[root@tomcat1 local]# cd tomcat-11.0.5/
[root@tomcat1 tomcat-11.0.5]# ls
配置tomcat
[root@tomcat2 tomcat-11.0.5]# vim /etc/profile
[root@tomcat2 tomcat-11.0.5]# tail -n 3 /etc/profile
export TOMCAT_HOME=/usr/local/tomcat-11.0.5
export PATH=$PATH:$TOMCAT_HOME/bin
刷新配置并启动
[root@tomcat2 tomcat-11.0.5]# source /etc/profile
[root@tomcat2 tomcat-11.0.5]# startup.sh
Using CATALINA_BASE:   /usr/local/tomcat-11.0.5
Using CATALINA_HOME:   /usr/local/tomcat-11.0.5
Using CATALINA_TMPDIR: /usr/local/tomcat-11.0.5/temp
Using JRE_HOME:        /usr/local/jdk-21.0.6/
Using CLASSPATH:       /usr/local/tomcat-11.0.5/bin/bootstrap.jar:/usr/local/tomcat-11.0.5/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
验证VIP绑定
[root@serverA ~]# ip addr show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:4a:9c:7c brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.193.30/24 brd 192.168.193.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.193.100/32 scope global ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe4a:9c7c/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever


[root@serverB ~]# ip addr show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:a0:1e:13 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.193.31/24 brd 192.168.193.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.193.101/32 scope global ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fea0:1e13/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

[root@serverC ~]# ip addr show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:98:fb:7c brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.193.32/24 brd 192.168.193.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.193.102/32 scope global ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe98:fb7c/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
停止serverA的keepalived服务,看是否转移到serverC
[root@serverA ~]# systemctl stop keepalived

[root@serverC ~]# ip addr show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:98:fb:7c brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.193.32/24 brd 192.168.193.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.193.102/32 scope global ens160
       valid_lft forever preferred_lft forever
    inet 192.168.193.100/32 scope global ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe98:fb7c/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever


DNS服务器

[root@192 ~]# hostnamectl hostname dns
[root@192 ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.193.11/24 ipv4.gateway 192.168.193.2  ipv4.dns 223.5.5.5 connection.autoconnect yes
[root@192 ~]# nmcli c up ens160
安装服务
[root@dns ~]# yum install -y bind bind-utils
[root@dns ~]# systemctl start named
[root@dns ~]# systemctl enable named
Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.
修改主配置文件
[root@dns ~]# vi /etc/named.conf
[root@dns ~]# head -n 15 /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
	listen-on port 53 { 127.0.0.1; 192.168.193.11; };
	listen-on-v6 port 53 { ::1; };
修改区域文件
[root@dns ~]# tail -n 10 /etc/named.conf
zone "example.com" IN {
    type master;
    file "/var/named/example.com.zone";
    allow-update { none; };
};


include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
修改数据文件
[root@dns ~]# cat /var/named/example.com.zone
$TTL 86400
@       IN      SOA     ns1.example.com. admin.example.com. (
                        1800 ; Serial
                        3600       ; Refresh
                        1800       ; Retry
                        6040     ; Expire
                        1800      ; Minimum TTL
)

@       IN      NS      ns1.example.com.
@       IN      A       192.168.193.100
@       IN      A       192.168.193.101
@       IN      A       192.168.193.102
www     IN      A       192.168.193.100
www     IN      A       192.168.193.101
www     IN      A       192.168.193.102
ns1     IN      A       192.168.193.11
检查配置并重启服务
[root@dns ~]# named-checkconf
[root@dns ~]# named-checkzone example.com /var/named/example.com.zone
zone example.com/IN: loaded serial 1800
OK
[root@dns ~]# systemctl restart named

client客户端操作

[root@192 ~]# hostnamectl hostname client
[root@192 ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.193.90/24 ipv4.gateway 192.168.193.2  ipv4.dns 192.168.193.11 connection.autoconnect yes
[root@192 ~]# nmcli c up ens160
客户端测试
[root@client ~]# dig www.example.com

; <<>> DiG 9.16.23-RH <<>> www.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8311
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: efcea6c80851d1460100000067e39fd49e0b91c78f25f130 (good)
;; QUESTION SECTION:
;www.example.com.		IN	A

;; ANSWER SECTION:
www.example.com.	86400	IN	A	192.168.193.101
www.example.com.	86400	IN	A	192.168.193.100
www.example.com.	86400	IN	A	192.168.193.102

;; Query time: 2 msec
;; SERVER: 192.168.193.11#53(192.168.193.11)
;; WHEN: Wed Mar 26 14:33:56 CST 2025
;; MSG SIZE  rcvd: 120

实验完成

要在CentOS环境下部署基于Keepalived的MySQL双架构,首先要理解双的概念和Keepalived的工作原理。双指的是两台MySQL服务器配置为可读写状态,通过特定的同步机制保证数据的一致性。Keepalived则用于实现服务的高可用性和故障转移,它通过虚拟IP和健康检查来自动切换服务器。 参考资源链接:[Centos下Mysql+Keepalived高可用环境完整部署记录(个人珍藏版)](https://wenku.youkuaiyun.com/doc/6412b4d3be7fbd1778d40f37?spm=1055.2569.3001.10343) 以下是部署MySQL双架构的步骤: 1. 安装MySQL服务器配置两台服务器上的MySQL实例。 2. 确保两台MySQL服务器配置文件(***f)中设置了server-id,以区分不同的数据库实例。 3. 在两台MySQL服务器配置二进制日志(binlog)和中继日志(relay log),并设置相应的自动重启和日志清理策略。 4. 在MySQL上配置从复制,确保服务器上的更改能够复制到从服务器上。 5. 安装Keepalived并进行配置,设置虚拟IP地址,并编写监控脚本确保MySQL服务状态良好。 6. 在Keepalived配置文件中设置故障转移策略,以便在服务器发生故障时,自动将虚拟IP切换到服务器。 7. 启动MySQL和Keepalived服务,并进行测试,验证数据同步和故障转移是否正常工作。 在这个过程中,可以参考《Centos下Mysql+Keepalived高可用环境完整部署记录(个人珍藏版)》这篇资料。它不仅提供了详细的部署步骤,还包含了各种配置文件的示例和可能出现的问题的解决方案。通过这个实操手册,你可以更加细致和全面地理解双配置要点和Keepalived在其中的作用。这将帮助你快速部署并维护一个稳定且高效的MySQL双架构。 参考资源链接:[Centos下Mysql+Keepalived高可用环境完整部署记录(个人珍藏版)](https://wenku.youkuaiyun.com/doc/6412b4d3be7fbd1778d40f37?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值