企业级双活NGINX+图形化GUI管理搭建详细教程 nginx+keepalived+nginxwebui

概要

在目前互联网发展形势下,有非常多的业务需求要从互联网或者VPN之类的非安全区域来访问企业内部的业务生产系统。这给网络框架和网络安全提出了很大的挑战。这种需求相信每一位运维人员都遇到过,而且也深思过。
在这种需求下,怎么去构建一种生产环境下的安全有效的访问途径。本人作为有某三甲医院多年运维经验的工作人员,分享自己的一整套改造经验之谈。有需求的同学们可以借鉴,有高工看见了,也提提建议。

背景

先交代下背景:目前医院信息化作为互联网信息化的一部分,总感觉太保守,一来也是发展迟,发展快,二来是思想不够解放。导致现在信息孤岛严重,发展受限。
在这里插入图片描述
相信这张图是医院互联网应用下的普遍网络构架吧。对于网闸这种东西,我是深恶痛绝,太死板,业务限制太大。谁用谁知道
在这里插入图片描述
我的思路是这样的,所有非安全域的访问(互联网、VPN)只能访问应用代理服务器(可搭配),而应用代理服务器通过四层、七层代理方式访问真正的内网服务器(涵盖99%的业务访问流程)。 优势是代理配置更灵活、业务应用拓展更灵活。

应用代理架构

nginx+keepalived+nginxwebui 这三款软件可以自行百度下,都是主流稳定产品,具体不介绍了,都是神一样的存在。而且不用花钱的。。。

nginx:反向代理四层、七层应用。
keepalived:对nginx做双活避免宕机。
nginxwebui:图形界面管理nginx(更方便、更安全)。

整体架构拓扑

在这里插入图片描述
准备工作:
1、准备两台交换机,最好做个堆叠。
2、准备两台物理服务器(看你预算,生产环境中不建议单台)。安装centos或者openEuler操作系统,,,看你情况。
3、两台物理服务器网卡可以做个bond0做个。

思路
1、基础环境配置
2、编译安装nginx
3、安装nginx图形管理页面nginxwebui
4、配置双活keepalived
5、测试方法
6、升级须知

安装开始

1、基础环境配置 (两个节点配置相同)
① selinux关闭,yum阿里云网络源配置。
② 操作系统防火墙配置:

[root@localhost ~]#firewall-cmd --zone=public --add-port=80/tcp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=443/tcp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=10240/tcp --permanent
[root@localhost ~]#firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
[root@localhost ~]#firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
[root@localhost ~]#firewall-cmd --reload

其中80、443端口是常用业务端口,10240是nginxwebui管理页面端口。后两条是因为keepalived使用vrrp协议实现主主,必须得放开。最后重新加载防火墙。。。。
提示:如果你有硬件防火墙,操作系统的防火墙也可以直接关闭。如下:

[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#systemctl disable firewalld

③yum安装列表:keepalived java-1.8.0-openjdk net-tools curl wget gcc gcc-c++ autoconf automake make openssl openssl-devel pcre pcre-devel zlib-devel 其中包括了keepalived、nginxwebui的环境java包、还有nginx及编译的包等。
可以一次性安装,也可以单个安装,例如

[root@localhost ~]#yum install -y keepalived

2、编译安装nginx(两个节点配置相同)
提示:这里强烈建议编译安装nginx,对于后期nginx的升级、增加模块等有重要作用
①下载nginx(最好选个最新的稳定版本,我这里以“1.22.1”做演示)
http://nginx.org/download

[root@localhost ~]#mkdir /usr/local/nginx    #创建一个nginx安装目录
[root@localhost ~]#cp nginx-1.22.1.tar.gz /usr/local/nginx/  #将下载的tar包拷贝进去
[root@localhost ~]#cd /usr/local/nginx/
[root@localhost ~]#tar zxvf nginx-1.22.1.tar.gz   #解压tar包
[root@localhost ~]#cd nginx-1.22.1
[root@localhost ~]#./configure  --prefix=/usr/local/nginx --with-http_ssl_module  --with-http_stub_status_module --with-http_realip_module --with-http_secure_link_module --with-http_ssl_module --with-http_sub_module --with-http_v2_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module     #先configure  后面跟着安装路径 --with-是需要的模块。。。。基础的模块都带上了,基本够用。
[root@localhost ~]#make & make install   #编译及安装
------------------这就算装完了,可以在浏览器中输入http://IP 就能验证了。--------------
[root@localhost ~]#cd /usr/local/nginx/sbin/   #进入nginx安装目录
[root@localhost ~]#./nginx     #启动nginx
[root@localhost ~]#./nginx -V   #查看版本及模块及安装情况
-----------------下边为了便捷操作,将nginx服务安装到系统服务中去-----------------------
[root@localhost ~]#echo "export PATH=/usr/local/nginx/sbin:$PATH" > /etc/profile.d/n
<think>好的,我现在需要帮助用户了解如何实现Nginx部署。首先,我要明确用户的问题:他们想知道Nginx部署的方案、配置教程和最佳实践。根据用户提供的引用,特别是引用[3],里面提到了使用keepalived实现主备模式和主模型,以及抢占和非抢占模式。我需要结合这些信息来构建回答。 首先,我需要确认什么是部署。通常,指的是两个或多个节点同时处理流量,而不是传统的主备模式(一个跃,另一个备用)。但根据引用[3],用户提到的“”可能是指主模型,即两个节点都处于动状态,处理不同的服务或通过DNS负载均衡共同处理请求。这可能涉及到不同的配置方式,比如DNS轮询或使用负载均衡器。 接下来,我需要整理实现方案。根据引用[3],keepalived可以配置为主备或主模式。主备模式有一个主节点和一个备用节点,当主节点故障时,备用接管。而主模式可能是指两个节点互为主备,各自处理一部分流量,或者通过不同的VIP(虚拟IP)提供服务。但真正的可能需要两个节点同时处理流量,这可能需要DNS负载均衡或外部负载均衡器。 然后,配置教程部分需要具体步骤。包括安装keepalived、配置Nginx、修改keepalived配置文件(设置虚拟IP、优先级、脚本检测等)。对于主模式,可能需要两个VIP,每个节点作为其中一个VIP的主节点,另一个VIP的备用节点。这样,两个节点可以同时处理不同VIP的请求,实现某种程度的。 最佳实践方面,需要考虑高可用性、监控、会话保持、安全等。例如,使用健康检查脚本确保Nginx正常运行,配置防火墙规则,使用SSL,以及日志监控等。 同时,用户提供的其他引用,如引用[1]和[2],涉及Nginx处理WebSocket和多项目部署,这可能与部署中的具体配置相关,比如确保每个Nginx节点正确配置反向代理和处理不同端口的项目。但当前问题主要围绕部署,可能需要集中在keepalived负载均衡策略上。 需要注意的是,用户可能对和主备模式的区别有疑问,所以在回答中需要明确说明两种模式的不同,并根据引用[3]提供的主模型来展开。此外,生成的相关问题应该引导用户进一步了解细节,如与主备模式的区别、健康检查配置、性能优化等。 最后,确保回答结构清晰,分步骤说明,并引用正确的引用标记。同时,检查LaTeX格式是否正确,不过在这个问题中可能涉及较少数学公式,但需要确保任何技术术语或代码块格式正确。</think>### Nginx部署实现方案 Nginx部署的核心在于**同时利用多个节点处理流量**,避免单点故障。常见方案包括**主模式(Dual-Active)**和**基于DNS的负载均衡**,以下为详细配置步骤及最佳实践: --- #### 一、实现方案 1. **基于Keepalived主模式** 使用两个Nginx节点,各自绑定不同的虚拟IP(VIP),通过路由策略实现流量分流。两个节点互为备份,任一节点故障时,VIP自动漂移到另一节点[^3]。 2. **DNS轮询负载均衡** 为两个Nginx服务器配置相同域名但不同IP,DNS解析时轮询返回IP地址,实现流量分发。 3. **外部负载均衡器(如F5/HAProxy)** 通过外部设备将流量分发到多个Nginx节点,实现真正的。 --- #### 二、配置教程(以Keepalived主模式为例) ##### 1. 环境准备 - 两台Nginx服务器:`NodeA (192.168.1.10)`、`NodeB (192.168.1.11)` - 虚拟IP:`VIP1 (192.168.1.100)`、`VIP2 (192.168.1.101)` ##### 2. 安装Keepalived ```bash # 在两台节点执行 sudo apt-get install keepalived -y # Debian/Ubuntu sudo yum install keepalived -y # CentOS/RHEL ``` ##### 3. 配置Keepalived - **NodeA配置(/etc/keepalived/keepalived.conf)** ```nginx vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100 # VIP1 } } vrrp_instance VI_2 { state BACKUP interface eth0 virtual_router_id 52 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 2222 } virtual_ipaddress { 192.168.1.101 # VIP2 } } ``` - **NodeB配置(/etc/keepalived/keepalived.conf)** ```nginx vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100 # VIP1 } } vrrp_instance VI_2 { state MASTER interface eth0 virtual_router_id 52 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 2222 } virtual_ipaddress { 192.168.1.101 # VIP2 } } ``` ##### 4. 配置Nginx健康检查脚本 创建脚本`/etc/keepalived/check_nginx.sh`: ```bash #!/bin/bash if ! pgrep nginx > /dev/null; then systemctl restart nginx if ! pgrep nginx > /dev/null; then exit 1 fi fi exit 0 ``` 赋予执行权限:`chmod +x /etc/keepalived/check_nginx.sh`,并在Keepalived配置中添加: ```nginx vrrp_script chk_nginx { script "/etc/keepalived/check_nginx.sh" interval 2 weight 2 } ``` ##### 5. 启动服务 ```bash systemctl start keepalived systemctl enable keepalived ``` --- #### 三、最佳实践 1. **会话保持** 使用`ip_hash`或`sticky`模块确保用户请求分配到固定后端。 ```nginx upstream backend { ip_hash; server 192.168.2.10; server 192.168.2.11; } ``` 2. **监控与告警** 集成Prometheus+Grafana监控Nginx状态和Keepalived VIP漂移。 3. **安全加固** - 配置防火墙规则限制VIP访问。 - 启用SSL/TLS加密(参考引用[1]中WebSocket安全配置)。 4. **自动化故障恢复** 结合健康检查脚本和日志分析(如ELK)实现快速故障定位[^3]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值