keepalived+nfs drbd

本文详细解析了如何在优快云上发布一篇高质量的技术博客,包括标题、标签和内容的优化策略,旨在帮助作者提高博客的可见性和吸引力。
<think>我们正在构建一个高可用负载均衡集群,使用Nginx、Tomcat、DNS、KeepalivedNFS。以下是详细的步骤和配置方法: ### 1. 架构概述 - **DNS**:解析域名到虚拟IP(由Keepalived提供)。 - **Keepalived**:提供虚拟IP(VIP)并在两台Nginx负载均衡器之间实现高可用(主备切换)。 - **Nginx**:作为负载均衡器,将请求分发到后端的Tomcat服务器。 - **Tomcat**:运行Java Web应用的服务器。 - **NFS**:网络文件系统,用于共享存储(如Web应用的静态资源,确保多台Tomcat内容一致)。 ### 2. 环境准备 假设我们有两台Nginx+Keepalived服务器(主:192.168.14.101,备:192.168.14.102),两台Tomcat服务器(192.168.14.103, 192.168.14.104),一台NFS服务器(192.168.14.105)。 ### 3. 步骤 #### 3.1 配置NFS共享存储(在NFS服务器上操作) 1. 安装NFS服务器: ```bash sudo apt-get update sudo apt-get install nfs-kernel-server ``` 2. 创建共享目录并设置权限: ```bash sudo mkdir /data/web_share sudo chown nobody:nogroup /data/web_share sudo chmod 777 /data/web_share ``` 3. 编辑`/etc/exports`文件,添加: ``` /data/web_share 192.168.14.0/24(rw,sync,no_subtree_check,no_root_squash) ``` 4. 重启NFS服务: ```bash sudo systemctl restart nfs-kernel-server ``` #### 3.2 在Tomcat服务器上挂载NFS共享目录 1. 安装NFS客户端: ```bash sudo apt-get install nfs-common ``` 2. 创建本地挂载点: ```bash sudo mkdir -p /var/www/html ``` 3. 挂载NFS共享目录(两台Tomcat都需要): ```bash sudo mount 192.168.14.105:/data/web_share /var/www/html ``` 4. 设置开机自动挂载(编辑`/etc/fstab`): ``` 192.168.14.105:/data/web_share /var/www/html nfs defaults 0 0 ``` #### 3.3 配置Tomcat(两台Tomcat服务器) 1. 安装Tomcat(以Tomcat 9为例): ```bash sudo apt-get install tomcat9 ``` 2. 配置Tomcat的webapps目录指向挂载的NFS目录(可选,如果应用需要共享存储): 通常,我们将应用部署到`/var/lib/tomcat9/webapps`,但为了使用共享存储,我们可以创建符号链接或修改`server.xml`中的`appBase`。这里我们采用符号链接: ```bash sudo rm -rf /var/lib/tomcat9/webapps sudo ln -s /var/www/html/webapps /var/lib/tomcat9/webapps ``` 3. 重启Tomcat: ```bash sudo systemctl restart tomcat9 ``` #### 3.4 配置Nginx负载均衡器(两台Nginx服务器都需要安装和配置) 1. 安装Nginx: ```bash sudo apt-get install nginx ``` 2. 配置负载均衡(编辑`/etc/nginx/nginx.conf`或`/etc/nginx/sites-available/default`): ```nginx upstream tomcat_servers { server 192.168.14.103:8080 weight=100; server 192.168.14.104:8080 weight=90; } server { listen 80; server_name yourdomain.com; location / { proxy_pass http://tomcat_servers; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 3. 重启Nginx: ```bash sudo systemctl restart nginx ``` #### 3.5 配置Keepalived(实现Nginx负载均衡器的高可用) 1. 安装Keepalived(两台Nginx服务器): ```bash sudo apt-get install keepalived ``` 2. 配置主Keepalived(192.168.14.101): 编辑`/etc/keepalived/keepalived.conf`: ```conf vrrp_instance VI_1 { state MASTER interface ens192 # 根据实际网卡修改 virtual_router_id 51 priority 100 # 主服务器优先级更高 advert_int 1 authentication { auth_type PASS auth_pass yourpassword } virtual_ipaddress { 192.168.14.11 # 虚拟IP } } ``` 3. 配置备Keepalived(192.168.14.102): ```conf vrrp_instance VI_1 { state BACKUP interface ens192 virtual_router_id 51 priority 90 # 备用服务器优先级较低 advert_int 1 authentication { auth_type PASS auth_pass yourpassword } virtual_ipaddress { 192.168.14.11 } } ``` 4. 启动Keepalived(两台): ```bash sudo systemctl start keepalived sudo systemctl enable keepalived ``` #### 3.6 配置DNS 在DNS解析服务商处,将域名解析到虚拟IP`192.168.14.11`。 ### 4. 验证 - 访问虚拟IP`192.168.14.11`应该能够访问到Tomcat应用。 - 关闭主Nginx服务器,备用Nginx服务器应接管虚拟IP(需要几秒切换时间)。 - 检查负载均衡:Nginx根据权重分配请求到两台Tomcat。 ### 注意事项 - 防火墙:确保相关端口(80、8080、NFS端口)开放。 - SELinux:如果启用,可能需要调整策略。 此方案实现了: - DNS解析到虚拟IP。 - Keepalived保证Nginx负载均衡器的高可用。 - Nginx分发请求到Tomcat集群。 - NFS共享存储保证Tomcat应用内容一致。 §§相关问题§§ 1. 如何监控高可用负载均衡集群的健康状态? 2. 除了NFS,还有哪些共享存储方案可以用于Tomcat集群? 3. Keepalived的脑裂问题如何解决?</think>### 高可用负载均衡集群构建方案 使用 **Nginx + Tomcat + DNS + Keepalived + NFS** 实现高可用负载均衡集群的步骤如下: --- #### **一、架构设计** ```mermaid graph TD A[用户访问] --> B(DNS解析) B --> C[虚拟IP:192.168.14.11] C --> D{Keepalived} D -->|主节点| E[Nginx-Master] D -->|备节点| F[Nginx-Backup] E & F --> G[Tomcat集群] G --> H[NFS共享存储] ``` --- #### **二、详细步骤与配置** ##### **1. DNS配置** - 将域名解析到Keepalived的虚拟IP(如`192.168.14.11`) ```bash # DNS记录示例 www.yourdomain.com A记录 192.168.14.11 ``` ##### **2. Keepalived配置(高可用VIP)** > **主节点配置** (`/etc/keepalived/keepalived.conf`)[^2] ```nginx vrrp_instance VI_1 { state MASTER # 主节点 interface ens192 # 网卡名称(需根据实际修改) virtual_router_id 51 priority 100 # 优先级(主>备) advert_int 1 authentication { auth_type PASS auth_pass yourpassword } virtual_ipaddress { 192.168.14.11 # 虚拟IP } } ``` > **备节点配置** ```nginx vrrp_instance VI_1 { state BACKUP # 备节点 interface ens192 virtual_router_id 51 priority 90 # 优先级低于主节点 advert_int 1 authentication { ... } # 同上 virtual_ipaddress { 192.168.14.11 } } ``` **启动服务** ```bash systemctl start keepalived && systemctl enable keepalived ``` ##### **3. Nginx负载均衡配置** > **Nginx主备节点相同配置** (`/etc/nginx/nginx.conf`) ```nginx upstream tomcat_servers { server 192.168.14.103:8080 weight=100; # Tomcat节点1 server 192.168.14.104:8080 weight=90; # Tomcat节点2 } server { listen 80; location / { proxy_pass http://tomcat_servers; proxy_set_header Host $host; } } ``` **重启Nginx** ```bash systemctl restart nginx ``` ##### **4. Tomcat集群配置** - 所有Tomcat节点部署相同应用 - 通过NFS共享资源(如上传文件目录) ```bash # 在每台Tomcat服务器挂载NFS mount -t nfs 192.168.14.105:/shared_data /opt/tomcat/webapps/shared ``` ##### **5. NFS共享存储配置** > **NFS服务器** (`/etc/exports`) ```bash /shared_data 192.168.14.0/24(rw,sync,no_root_squash) ``` **启动服务** ```bash systemctl start nfs-server && exportfs -a ``` --- #### **三、故障切换验证** 1. **模拟主Nginx故障** ```bash systemctl stop nginx # 在主节点执行 ``` 2. **观察Keepalived切换** - 备节点自动接管VIP `192.168.14.11` - 用户请求无缝转移至备Nginx[^1] --- #### **四、关键优化建议** - **健康检查**:在Keepalived中添加Nginx进程监控脚本,实现自动故障转移。 - **会话保持**:Nginx配置`ip_hash`或Tomcat使用Redis共享Session。 - **NFS高可用**:使用DRBD+Heartbeat替代单点NFS。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值