nginx反向代理实现浮动ip配置

技术调研,浅浅学习一下。

需求分析

需求:主备两个集群,对外要提供一个vip供访问;同一时间只会访问一个集群,主挂了切备提供服务。
分析:

  1. vip方案:直接手动配也行,keepalived也行,heartbeat也行
  2. 不是两个服务器,是两个集群(不确定的服务器数量,不确定谁提供服务),手动配置和keepalived都不知道要配到哪个机器上
  3. 只能搞一个新的服务器做这个事。装nginx做反向代理。

反向代理,就是nginx服务器对外提供一个ip供访问,然后nginx做代理,确定转发给哪个服务器集群。

网络环境配置

本地模拟搞的简单些,搞了两个虚机做服务器。一个是nginx,另一个其实应该用几台做集群,对外用keepalived或者其他提供一个vip,不过我感觉可以用一个虚机装docker服务模拟,对外提供一个虚机ip。
虚机1:
对外ip我用了nginx服务器网卡ip(ens41:192.168.2.15)

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.1.15  netmask 255.255.255.0  broadcast 192.168.1.255inet6 fe80::20c:29ff:fe87:686d  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:87:68:6d  txqueuelen 1000  (Ethernet)RX packets 4479509  bytes 4944774197 (4.9 GB)RX errors 0  dropped 1  overruns 0  frame 0TX packets 1462946  bytes 474403056 (474.4 MB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0ens41: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.2.15  netmask 255.255.255.0  broadcast 192.168.2.255inet6 fe80::20c:29ff:fe87:6895  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:87:68:95  txqueuelen 1000  (Ethernet)RX packets 4636  bytes 2347762 (2.3 MB)RX errors 0  dropped 132  overruns 0  frame 0TX packets 2412  bytes 1805264 (1.8 MB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

虚机2:
docker集群都搭在了这台服务器上,集群对外ip就是服务器网卡ip,和nginx服务器ens33网卡相通。

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.1.9  netmask 255.255.255.0  broadcast 192.168.1.255inet6 fe80::20c:29ff:fe81:d07d  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:81:d0:7d  txqueuelen 1000  (Ethernet)RX packets 4092821  bytes 2470718161 (2.4 GB)RX errors 0  dropped 7821  overruns 0  frame 0TX packets 4224258  bytes 2537064427 (2.5 GB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

安装nginx

ubuntu系统,直接apt

apt update
apt install nginx
nginx -V
nginx version: nginx/1.14.0 (Ubuntu)
built with OpenSSL 1.1.1  11 Sep 2018
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-YlUNvj/nginx-1.14.0=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module

--with-stream=dynamic

nginx配置

服务不仅是http(暴露端口号1),还有ssh,tcp/ssl(暴露端口号2),所以配置上使用了tcp。

  1. 修改配置文件,增加stream
vim /etc/nginx/nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;events {worker_connections 768;# multi_accept on;
}
# 增加begin
stream
{upstream server_upstreams {server 192.168.1.9:暴露端口号1;}server {listen 暴露端口号1;proxy_pass server_upstreams;}upstream server_upstreams_1 {server 192.168.1.9:暴露端口号2;}server {listen 暴露端口号2;proxy_pass server_upstreams_1;}
}
# 增加end
http {### Basic Settings##sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;types_hash_max_size 2048;# server_tokens off;# server_names_hash_bucket_size 64;# server_name_in_redirect off;include /etc/nginx/mime.types;default_type application/octet-stream;### SSL Settings##ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLEssl_prefer_server_ciphers on;### Logging Settings##access_log /var/log/nginx/access.log;error_log /var/log/nginx/error.log;### Gzip Settings##gzip on;# gzip_vary on;# gzip_proxied any;# gzip_comp_level 6;# gzip_buffers 16 8k;# gzip_http_version 1.1;# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;### Virtual Host Configs##include /etc/nginx/conf.d/*.conf;include /etc/nginx/sites-enabled/*;
}#mail {
#	# See sample authentication script at:
#	# http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#	# auth_http localhost/auth.php;
#	# pop3_capabilities "TOP" "USER";
#	# imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#	server {
#		listen     localhost:110;
#		protocol   pop3;
#		proxy      on;
#	}
# 
#	server {
#		listen     localhost:143;
#		protocol   imap;
#		proxy      on;
#	}
#}
  1. 启动nginx
    apt安装的nginx,启动路径在usr/sbin下,指定使用的配置文件启动。
/usr/sbin# ./nginx -c /etc/nginx/nginx.conf

测试

可通过postman访问http url(ip+端口是192.168.2.15:暴露端口号1),测试可GET到内容。
TCP连接也通过92.168.2.15:暴露端口号2去建立,可正常建立连接。

停掉nginx服务

/usr/sbin# ./nginx -s stop

(如果是浏览器访问就等待一会,有缓存)再重复上面步骤,都不通了。验证成功。

后端服务切换

手动切换:准备主备两个conf文件。要切换的时候停nginx,换用另一个conf去启动。
自动切换:
一般灾备是不搞自动的,尤其是涉及到两地两个集群切换,得人工干预比较保险。高可用可以自动,冗余热备,保证对外提供服务。
目前查到的自动切也是脚本实现nginx重启。参考nginx配置自切换后端脚本。

如果配置多个,使用负载均衡,没找到合适的测量。参考负载均衡分配服务器策略

nginx 代理tcp资料

  1. NGINX 实现TCP反向代理 主要参考的这个
  2. 使用 Nginx 实现 TCP 四层反向代理
  3. 解决Nginx代理TCP获取不到客户端真实IP的问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/639315.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

KDJ指标的算法、原理和特性

KDJ的完整中文名称是随机摆动指标&#xff0c;是短线交易者最常用的指标之一。作为应用最广泛的指标之一&#xff0c;KDJ的用法网上随处可见&#xff0c;但大部分介绍都只会告诉你超买超卖&#xff0c;金叉死叉&#xff0c;详细点的讲讲背离和钝化&#xff0c;至于为什么这么用…

填空题如何去掉答案?教你3个去除小妙招

填空题如何去掉答案&#xff1f;在日常学习过程中&#xff0c;将写过的试卷填空题去掉答案&#xff0c;是一种非常有效的学习方法&#xff0c;可以帮助学生们更好地巩固和扩充知识点。首先&#xff0c;去掉答案可以让学生们重新审视题目&#xff0c;加深对知识点的理解。其次&a…

【RT-DETR有效改进】Google | EfficientNetV2一种超轻量又高效的网络 (轻量化网络)

前言 大家好&#xff0c;我是Snu77&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持Re…

鸿蒙开发笔记(二十): 常用组件 TextInput/TextArea, 弹窗,视频播放Video

1. 文本输入 TextInput/TextArea TextInput为单行输入框、TextArea为多行输入框。通过以下接口来创建。 TextArea(value?:{placeholder?: ResourceStr, text?: ResourceStr, controller?: TextAreaController})TextInput(value?:{placeholder?: ResourceStr, text?: R…

小型洗衣机怎么用?实用的迷你洗衣机推荐

由于我们的内衣、内裤和袜子等等贴身小件衣物的清洁频率比一般的衣物要高。而且&#xff0c;如果我们人工手洗的话&#xff0c;不仅会大大浪费了我们的时间&#xff0c;而且还不能进行对这些贴身的以为进行深层消毒和除菌。这种情况下&#xff0c;就得需要一台专门用于清洗内衣…

常用的gpt-4 prompt words收集3

1. The picture is a bit blurry, please identify it carefully, don’t rush. 图片有点模糊请仔细看不要着急 2. Please organize the code in the picture above into a complete tutorial, elaborating on its functions in detail along with the code. 将图片上的代码…

minio在文件服务器上显示的是文件夹和xl.meta的文件形式

在linux上安装好minio之后&#xff0c;上传文件测试&#xff0c;文件存储目录下显示的文件是xl.meta形式的&#xff0c;并不是与预想中的实体文件形式&#xff0c;原因是因为新安装的minio的版本比较新&#xff0c;貌似2022年6月份之后的版本就改成这种形式的文件了。为了后续便…

数据结构·顺序表应用

本节应用是要用顺序表实现一个通讯录&#xff0c;收录联系人的姓名、性别、电话号码、住址、年龄 ​​​​​​​ 顺序表的实现在上一节中已经完成了&#xff0c;本节的任务其实就是应用上节写出来的代码的那些接口函数功能&#xff0c;做出来一个好看的&#xff0c;可…

设计类标书制作方法

一、引言 在当今竞争激烈的市场环境中&#xff0c;设计类标书制作显得尤为重要。它不仅是展示创意和实力的舞台&#xff0c;更是决定项目归属的关键环节。 二、标书制作要点 1.明确设计要求与目标 在制作设计类标书前&#xff0c;务必深入了解招标方的需求、期望和目标。这…

晨控CK-FR03-EC与欧姆龙NX系列EtherCAT通讯连接说明手册

晨控CK-FR03-EC与欧姆龙NX系列EtherCAT通讯连接说明手册 晨控CK-FR03-EC是一款基于射频识别技术的高频RFID标签读卡器&#xff0c;读卡器工作频率为13.56MHZ&#xff0c;支持对I-CODE 2、I-CODE SLI等符合ISO15693国际标准协议格式标签的读取。 读卡器同时支持标准工业通讯协…

【Linux C | 进程】进程环境 | 什么是进程?进程的开始、终止、存储空间布局、命令行参数、环境变量

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

OPC UA网关BL121 支持Modbus转OPC UA协议转换

随着物联网技术的迅猛发展&#xff0c;人们深刻认识到在智能化生产和生活中&#xff0c;实时、可靠、安全的数据传输至关重要。在此背景下&#xff0c;高性能的物联网数据传输解决方案——协议转换网关应运而生&#xff0c;广泛应用于工业自动化和数字化工厂应用环境中。 钡铼…

spark+phoenix读取hbase

正常来说这个内容应该网上可参考的文章很多&#xff0c;但是我还是捣鼓了好久&#xff0c;现在记录下来&#xff0c;给自己个备忘录。 phoenix是操作hbase的皮肤&#xff0c;他可以轻松的使用sql语句来操作hbase&#xff0c;比直接用hbase的原语操作要友好的多。spark直接操作…

YOLOv8改进 | 进阶实战篇 | 利用YOLOv8进行过线统计(可用于人 、车过线统计)

一、本文介绍 Hello,各位读者,最近会给大家发一些进阶实战的讲解,如何利用YOLOv8现有的一些功能进行一些实战, 让我们不仅会改进YOLOv8,也能够利用YOLOv8去做一些简单的小工作,后面我也会将这些功能利用PyQt或者是pyside2做一些小的界面给大家使用。 在开始之前给大家推…

从心理学角度看海外网红营销:品牌与消费者的心理互动

近年来&#xff0c;随着社交媒体的蓬勃发展&#xff0c;海外网红营销成为品牌推广的一种独特而有效的手段。这种新型营销方式不仅仅依赖于产品本身的特性&#xff0c;更加注重通过网红与消费者之间的心理互动来建立品牌形象&#xff0c;激发购买欲望。本文Nox聚星将和大家从心理…

17.用户身份与能力

Linux系统的管理员之所以是root&#xff0c;并不是因为它的名字叫root&#xff0c;而是因为该用户的身 份号码即UID&#xff08;User IDentification&#xff09;的数值为 0。在 Linux 系统中&#xff0c;UID就像我们的身份证号 码一样具有唯一性&#xff0c;因此可通过用户的U…

【明道云】学习笔记1-了解APaaS

【背景】 APaaS (Application Platform As A Service) &#xff0c;即应用程序平台即服务&#xff0c;这是基于PaaS&#xff08;平台即服务&#xff09;的一种解决方案&#xff0c;支持应用程序在云端的开发、部署和运行&#xff0c;提供软件开发中的基础工具给用户&#xff0…

基于XG24-EK2703A的BLE HID蓝牙键盘+鼠标复合设备功能开发(BLE+HID+FreeRTOS+Gecko SDK)

目录 项目介绍硬件介绍项目设计开发环境及工程参考总体流程图硬件基本配置应用初始化按键中断回调定时器回调按键响应任务蓝牙事件回调BLE HIDReport Map及报文键盘设备鼠标设备复合设备 发送字符串上/下滚动 功能展示项目总结 &#x1f449; 【Funpack3-1】基于XG24-EK2703A的…

Java streamFile

1.Stream流 1.1体验Stream流【理解】 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合&#xff0c;存储多个字符串元素 把集合中所有以"张"开头的元素存储到一个新的集合 把"张"开头的集合中的长度为3的元素存储到一个新的集合 遍历上一步得…

使用Scrapy 爬取“http://tuijian.hao123.com/”网页中左上角“娱乐”、“体育”、“财经”、“科技”、历史等名称和URL

一、网页信息 二、检查网页&#xff0c;找出目标内容 三、根据网页格式写正常爬虫代码 from bs4 import BeautifulSoup import requestsheaders {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/53…