Ngnix负载均衡和高可用集群及搭建与相关理论

这篇具有很好参考价值的文章主要介绍了Ngnix负载均衡和高可用集群及搭建与相关理论。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Ngnix负载均衡和高可用集群及搭建与相关理论

要搭建 Nginx 高可用集群,您可以遵循以下步骤:

  1. 安装 Nginx:在每个服务器上安装 Nginx。

  2. 安装 keepalived:安装 keepalived 负责 IP 地址管理和服务器的故障检测。

  3. 配置 keepalived:配置 keepalived 来设置虚拟 IP(VIP)。VIP 是在集群中所有节点之间共享的 IP 地址,当一个节点失效时它可以在其他节点上接管它。

  4. 配置 Nginx:配置 Nginx 以使用 VIP。这意味着在每个节点上都需要相同的 Nginx 配置。

  5. 启动服务:启动 Nginx 和 keepalived 服务并确保它们自动启动。

  6. 测试:测试集群是否正常工作。

高可能保持原理

keepalived 的主要原理是基于 VRRP(虚拟路由冗余协议)来提供 IP 地址高可用性和故障转移。它允许多台服务器共享同一个虚拟 IP 地址,并且能够在某一台服务器出现故障时,自动将虚拟 IP 转移到其他正常的服务器上。

安装 keepalived:

  1. 在 Linux 系统上安装 keepalived,可以使用如下命令进行安装:

    sudo apt-get update
    sudo apt-get install keepalived
    
  2. 安装完成后,可以使用如下命令检查版本:

    keepalived -v
    

配置 keepalived:

  1. 配置主备节点:需要选择两个节点作为主备节点,一个作为 master 服务器,另一个作为 backup/server 服务器。

  2. 修改 keepalived 配置文件:keepalived 配置文件默认路径为 /etc/keepalived/keepalived.conf,可以使用编辑器打开该文件进行修改。配置文件中包含以下内容:

    global_defs {
        router_id LVS_DEVEL
    }
    
    vrrp_script chk_nginx {
        script "killall -0 nginx"
        interval 2
        weight 2
    }
    
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 101
        virtual_ipaddress {
            192.168.1.199
        }
        track_script {
            chk_nginx
        }
    }
    

    在配置文件中,可以设置全局定义(global_defs)、VRRP 脚本(vrrp_script)和 VRRP 实例(vrrp_instance)。

  3. 启动 keepalived 服务:在两个服务器上都启动 keepalived 服务。命令如下:

    sudo systemctl start keepalived
    
  4. 检查状态:使用如下命令进行检查,在 master 服务器上应该显示 Master,而在 backup/server 服务器上应该显示 Backup。

    ip addr show eth0
    systemctl status keepalived
    

keepalived 是一种高可用性解决方案,它通过跟踪指定的服务或进程来检测服务器的状态,并在主节点发生故障时自动将虚拟 IP 转移到备份服务器上。正确安装和配置 keepalived 是保证系统高可用性的一项重要步骤。

配置keepalived的IP

步骤如下:

  1. 在keepalived的配置文件中,设置自己的虚拟IP地址。这可以在“vrrp_instance”块中完成。例如,假设要配置虚拟IP为192.168.1.100,则应该添加以下行:
virtual_ipaddress {
  192.168.1.100
}
  1. 在每个运行keepalived的服务器上,需要确保网络接口配置正确。如果您的服务器正在运行Ubuntu操作系统,则可以使用以下命令查看网络接口配置:
$ sudo nano /etc/network/interfaces

在这个文件中,您应该会看到类似以下内容的行:

auto eth0
iface eth0 inet static
  address 192.168.1.10
  netmask 255.255.255.0
  gateway 192.168.1.1

这些行定义了一些网络接口的属性,包括IP地址和子网掩码。要将虚拟IP添加到该接口上,请添加以下行:

auto eth0:0
iface eth0:0 inet static
  address 192.168.1.100
  netmask 255.255.255.0

添加完毕后,保存文件并退出。

  1. 现在,您需要让keepalived知道哪个接口应该使用虚拟IP。可以通过在keepalived配置文件中的“interface”块中指定接口名称来完成。例如,要将虚拟IP分配给名称为“eth0”的网络接口,请添加以下行:
interface eth0

完成上述步骤后,keepalived将配置并使用虚拟IP。

将外部域名解析到Keepalived的虚拟IP上

要将外部域名解析的IP绑定到Keepalived的虚拟IP上,您需要进行以下步骤:

  1. 在DNS服务器中将您的域名指向Keepalived的虚拟IP地址。例如:您可以在DNS配置中添加一个A记录,将域名mydomain.com指向虚拟IP地址。

  2. 在Nginx服务器中,将Nginx配置文件中的server_name设置为您的域名。例如:

server {
  listen 80;
  server_name mydomain.com;
  location / {
    proxy_pass http://your_upstream_server;
  }
}

这样,当外部用户访问mydomain.com时,请求将被路由到Keepalived的虚拟IP上,并转发到您的Nginx服务器。
服务器的IP地址和Keepalived虚拟IP都是非常重要的组成部分。服务器IP地址是用于识别和访问各个服务器的标志,而Keepalived虚拟IP则是用于提供服务的统一访问地址,保证了服务的高可用性和稳定性

在公网上设置Keepalived虚拟IP需要注意一些安全性问题。以下是大致的操作步骤:

  1. 首先,在需要部署服务的所有服务器上安装Keepalived软件。

  2. 确保服务器能够正常通信,配置主机名和IP地址。

  3. 在各个服务器上配置服务,并测试其可用性。

  4. 修改Keepalived配置文件(一般为/etc/keepalived/keepalived.conf),完成虚拟IP地址、真实服务器的IP及权重等配置。

  5. 启动Keepalived服务。

  6. 根据需要,可以使用防火墙来限制对虚拟IP的访问。

  7. 相关服务的负载均衡和监控可以通过其他工具来实现,比如Nginx、HAProxy等。

需要注意的是,在公网上部署Keepalived虚拟IP需要仔细考虑服务器的安全性,比如防止DDoS攻击、IP欺骗等问题,使用防火墙和其他安全工具来提升服务器的安全性。

如何验证配置的正确性

可以按照以下步骤进行:

  1. 首先确保Nginx进程正在运行,并且keepalived服务已经启动。
  2. 执行以下命令检查Nginx配置文件是否存在语法错误:sudo nginx -t
  3. 如果上述命令返回成功,则表示Nginx配置文件没有语法错误,可以继续测试。
  4. 尝试使用curl或者telnet等工具尝试连接到虚拟IP地址并访问Nginx服务。例如,使用curl命令:curl http://虚拟IP地址/
  5. 如果curl命令返回HTTP 200 OK状态码以及预期的内容,则表示Nginx配置正确。
  6. 另外也可以在Nginx配置文件中添加一个简单的测试页面来验证Nginx是否正常运行。

以上是测试Nginx配置正确性的基本步骤,可以根据具体情况进行适当的调整。

Nginx专用调试工具ngx_conf_t

它可以在运行时检查Nginx配置的语法和正确性。使用该工具需要将Nginx编译时加上–with-debug参数来开启debug模式。ngx_conf_t支持以下常见选项:

  • -t:测试Nginx配置文件的语法
  • -T:显示Nginx配置文件的语法树
  • -q:静默模式,如果配置正常则不输出任何内容,否则输出错误信息

例如,要检查Nginx配置文件的语法,可以使用以下命令:

nginx -t -c /path/to/nginx.conf

如果配置文件语法正确,则输出"configuration file /path/to/nginx.conf syntax is ok",否则输出错误信息。

Ng从入门到精通

如何对前后端多台服务器进行负载均衡

首先,我们需要安装Nginx。如果您使用的是Ubuntu系统,可以通过以下命令进行安装:

sudo apt-get update
sudo apt-get install nginx

安装完成后,我们需要编辑Nginx配置文件以实现分组负载均衡。

假设我们有两个前端服务器,分别为 192.168.1.100 和 192.168.1.101,两个后端服务器,分别为 192.168.1.200 和 192.168.1.201。我们可以按照以下步骤进行配置:

  1. 打开Nginx配置文件,一般在 /etc/nginx/nginx.conf

  2. 在http模块中添加以下内容:

upstream frontend {
    server 192.168.1.100;
    server 192.168.1.101;
}

upstream backend {
    server 192.168.1.200;
    server 192.168.1.201;
}

这里定义了两个 upstream 块,分别命名为 frontend 和 backend。每个 upstream 块包含多个服务器地址,用于实现负载均衡。

  1. 在server模块中,配置需要反向代理的前端和后端服务。例如:
server {
    listen 80;
    server_name frontend.example.com;

    location / {
        proxy_pass http://frontend;
    }
}

server {
    listen 80;
    server_name backend.example.com;

    location / {
        proxy_pass http://backend;
    }
}

这里定义了两个反向代理配置块,对应着前端和后端服务。对于每个配置块,我们指定了服务器监听的端口和域名。在 location 块中,我们使用 proxy_pass 指令将请求转发到对应 upstream 块中定义的服务器地址。

  1. 最后,保存文件并重启Nginx服务:
sudo service nginx restart

这样,前端服务和后端服务就分别通过负载均衡器进行了分组负载均衡。

如果您想测试一下是否生效,可以使用 curl 命令模拟请求:

curl http://frontend.example.com
curl http://backend.example.com

以上命令应该会随机访问负载均衡器中定义的服务器列表。

常用的几种Ngnix负载均衡配置

Nginx负载均衡有多种方式,这里介绍其中常用的几种方式和配置示例。

  1. 轮询(Round Robin)负载均衡方式

示例配置:

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }
 
    server {
        listen 80;
        
        location / {
            proxy_pass http://backend;
        }
    }
}

以上配置中,使用upstream模块定义了三个后端服务器,通过proxy_pass指令将请求转发给upstream模块定义的后端服务器。Nginx默认采用轮询算法进行负载均衡。

  1. IP Hash负载均衡方式

示例配置:

http {
    upstream backend {
        ip_hash;
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }
 
    server {
        listen 80;
        
        location / {
            proxy_pass http://backend;
        }
    }
}

以上配置中,使用ip_hash指令启用IP Hash负载均衡算法,即将同一个客户端的请求发送到同一个后端服务器。如果某个后端服务器不可用,则该客户端的请求会被发送到另一个可用的后端服务器。

  1. Least Connections负载均衡方式

示例配置:

http {
    upstream backend {
        least_conn;
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }
 
    server {
        listen 80;
        
        location / {
            proxy_pass http://backend;
        }
    }
}

以上配置中,使用least_conn指令启用Least Connections负载均衡算法,即将请求发送到当前连接数最少的后端服务器。如果某个后端服务器的连接数增加了,则该服务器的权重会相应地减小,请求会被分发到连接数更少的其他服务器上。

  1. URL Hash负载均衡方式

示例配置:

http {
    upstream backend {
        hash $request_uri;
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }
 
    server {
        listen 80;
        
        location / {
            proxy_pass http://backend;
        }
    }
}

以上配置中,使用hash指令启用URL Hash负载均衡算法,即将同一URL的请求发送到同一个后端服务器。如果某个后端服务器不可用,则该URL的请求会被发送到另一个可用的后端服务器。

5、Nginx加权负载均衡的配置示例:

http {
    upstream my_servers {
        server 192.168.0.2 weight=3;
        server 192.168.0.3 weight=2;
        server 192.168.0.4 weight=1;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://my_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;
        }
    }
}

在这个配置中,我们定义了一个名为my_servers的上游服务器组,其中有三个服务器分别具有不同的权重。默认情况下,每个服务器的权重值为1。在这里,我们设置服务器2拥有3个单位的权重,服务器3拥有2个单位的权重,服务器4拥有1个单位的权重。

接下来,我们在server块中使用proxy_pass将请求代理到上游服务器组my_servers。这样,根据权重值,Nginx会将更多的请求发送到拥有更高权重值的服务器。我们还设置了一些HTTP头信息,以确保客户端和服务器之间的信息传递正确。

当客户端向Nginx发送请求时,Nginx会将该请求代理到my_servers中的某个服务器上。如果某个服务器出现故障或暂停服务,Nginx会自动将该服务器从上游服务器组中移除,确保客户端始终连接到可用的服务器上。

上述示例都是在单个Nginx服务器上进行负载均衡,实际生产环境中可以通过多个Nginx服务器组成一个负载均衡集群,以提高负载均衡的性能和可靠性。

负载均衡器的IP裸露和域名解析问题

要将域名解析到负载均衡的服务器集群,需要进行以下步骤:

  1. 在域名注册商处设置域名解析。根据域名注册商的不同,设置方式可能会有所不同,一般需要将域名指向负载均衡器的IP地址。

  2. 在负载均衡器上配置实例。需要将负载均衡器绑定到一个公网IP地址上,并在负载均衡器上添加实例,即实际提供服务的服务器或容器。每个实例都有自己的IP地址和端口号。

  3. 配置负载均衡策略。可以根据需求设置不同的负载均衡策略,比如轮询、最小连接数等。

  4. 配置健康检查。在负载均衡器上要配置健康检查,以确保所有实例都能够正常工作。如果某个实例出现故障,则会自动将请求转发到其他可用实例。

  5. 配置防火墙规则。为了保证网络安全,需要在负载均衡器和实例之间设置防火墙规则,限制访问来源。

通过以上步骤,可以将域名解析到负载均衡的服务器集群,并设置对外的IP地址。

反向代理中添加自定义的请求头

要在Nginx反向代理中添加自定义 header 头,您需要在 Nginx 配置文件中使用 add_header 指令。将以下行添加到您的 Nginx 配置文件中,将自定义 header 头添加到请求中:

location / {
    proxy_pass http://backend;
    add_header X-My-Custom-Header "Custom Header Value";
}

此代码块将添加名为 X-My-Custom-Header 的 header 头到每个请求中,并将其值设置为 Custom Header Value。您可以根据需要更改这些值。

请注意,如果您已经在 backend 中包含特定 header 头,则可以使用 proxy_set_header 指令覆盖该头。例如,如果您需要覆盖用户代理 header 头:文章来源地址https://www.toymoban.com/news/detail-444536.html

location / {
    proxy_pass http://backend;
    proxy_set_header User-Agent "My Custom User Agent";
}

到了这里,关于Ngnix负载均衡和高可用集群及搭建与相关理论的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 两台宿主机搭建keepalived+Haproxy+mysql实现高可用负载均衡集群(电脑有限弄了两台,更多台同理)

    注意事项 : 1.切记 percona/percona-xtradb-cluster 的版本要统一 ,否则可能出现各种各样的问题 2. 宿主机要关闭SELINUX 。修改文件 vi /etc/selinux/config ,设置SELINUX为disabled,然后reboot机子  两台主机为: 宿主机1:192.168.10.4 宿主机2:192.168.10.6 主节点(在宿主机1上执行) 子节点1(在宿主

    2023年04月26日
    浏览(35)
  • LVS+KeepAlived高可用负载均衡集群

    高可用集群只需要在调度器上多进行一台或两台(服务器本身的价格比较昂贵,一般备用的服务器的数量会和当前业务创造的价值对等)的设置,就可避免因调度器瘫痪业务中断的风险,所以实现了真正的高可用的效果。 1.普通群集 普通的群集的部署是通过一台度器控制调配

    2024年02月09日
    浏览(68)
  • LVS+Keepalived架构(负载均衡高可用集群)

    普通的群集的部署是通过 一台调度器控制调配多台节点服务器 进行业务请求的处理,但是仅仅是一台调度器,就会存在极大的单点故障风险,当该调度器的链路或则调度器本身出现故障时,就会导致整个业务的无法正常进行  而高可用集群是由 一台主调度器和一台或多台备

    2024年02月12日
    浏览(45)
  • Ubuntu搭建Hadoop3.X分布式和高可用集群,一步步深入

    目录 1. 介绍 2. 基础环境 2.1 关闭防火墙 2.2 修改主机名和主机映射 2.3 免密登录 2.4 安装jdk 3. 搭建hadoop3.x完全分布式 3.1 下载包地址 3.2 上传并解压 3.3 创建目录 3.4 修改配置文件  3.4.1 core.site.xml  3.4.2 hdfs-site.xml  3.4.3 yarn-site.xml 3.4.4 mapred-site.xml 3.4.5 workers 3.4.6 hadoop-env.sh

    2024年02月04日
    浏览(55)
  • 如何部署LVS + keepalived 负载均衡高可用集群

    一、LVS架构 概念 L4和L7负载均衡的区别 keepalive故障自动切换 抢占与非抢占 二、keepalived管理LVS负载均衡器 LVS集中节点的健康检查 三、部署LVS + keeplived 高可用集群 第一步 关闭防火墙和安全机制          第二步 安装工具 第三步 手动配置模块 第四步 编辑策略配置文件 第五

    2024年02月13日
    浏览(32)
  • 第三章 ngnix动态负载均衡

    动态负载均衡 ngnix与consul进行关联配置         我们正常的情况就是,如果需要额外增加一台服务器,则会出现一个情况,就是它需要我们进行重启才能生效; 如果在高峰期的时候去增加以及修改机器的话,默认就是修改配置文件重新加载;         如果重新加载配置

    2024年02月12日
    浏览(35)
  • 高可用负载均衡搭建

    主机名 服务IP nginx-ka-master 172.17.1.131 nginx-ka-backup 172.17.1.132 web1-server 172.17.1.133 web2-server 172.17.1.134 VIP 172.17.1.88 keepalived只监测VIP的负载服务器(nginx/haproxy)是否正常,如果不正常就执行切换脚本 后端web服务器是由负载均衡器来判断是否正常 keepalived自身的健康是由本身服务的心

    2024年01月23日
    浏览(26)
  • 《企业级Linux高可用负载均衡集群实践真传》目录

    第1章 关于负载均衡... 2 1.1        负载均衡定义... 2 1.2        负载均衡在生产环境中的基本要求... 3 1.2.1 在线可扩展性... 3 1.2.2 高可用性... 3 1.2.3 多服务性... 4 1.3        负载均衡基本功能... 4 1.3.1      负载均衡... 4 1.3.2      健康检查... 5 1.3.3      负载均

    2024年02月02日
    浏览(43)
  • 基于nginx+keepalived的负载均衡、高可用web集群

    项目描述: 本项目旨在构建一个高性能、高可用的web集群,使用ansible批量部署项目环境,nginx实现七层负载均衡,NFS实现web服务器机器的数据同源,keepalived搭建双VIP实现高可用,Prometheus+grafana实现对LB负载均衡服务器以及NFS服务器的监控。 项目环境: CentOS 7.9、Nginx 1.25.2、

    2024年02月09日
    浏览(28)
  • Ngnix之反向代理、负载均衡、动静分离

    目录 1. Ngnix  1.1 Linux系统Ngnix下载安装 1.2 反向代理 正向代理(Forward Proxy): 反向代理(Reverse Proxy): 1.3 负载均衡 1.4 动静分离 Nginx是一个高性能的开源Web服务器,它还可以用作反向代理、负载均衡器以及动静分离的工具。 nginx: download 或   上传到服务器后: 进入到/usr/

    2024年02月04日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包