Nginx负载均衡+KeepAlived高可用服务

Myth丶恋晨 2022-04-11 10:52 449阅读 0赞

Nginx

概述

Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。

配置

配置文件路径

/usr/local/nginx/conf

应用

1.Http服务器

Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。

提供对外映射地址

  1. location ~\.(jpg|png){
  2. root /home/image
  3. }
2.虚拟主机(不常用)

可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。(这里举个例子,前几年流行自己创建个个人网站来娱乐,如果要是每个人都买一台服务器来维护网站的话,费用是比较高的,很划不来,为了降低费用便催生出虚拟主机,就是在一台服务器上虚拟出多个”主机”出来,大家可以共用这一台服务器,费用当然就很低了,但是有个问题,我们知道nginx默认的端口是80,使用nigix访问静态网页的时候,是不用输入80端口就可以访问的,如果nginx的端口修改为别的端口号如81,那么访问的时候便需要输入端口号81才能访问。多个人共用一台服务器,访问地址不能以端口号作为区分网站的标志,因为谁也不想在输入访问地址的时候还带个端口号,大家掏的钱都是一样的,那么怎么让大家都使用80端口而且区分出不同的个人网站呢?这就用到了域名,不同的用户输入自己的域名就可以访问自己的网站。比如aaaa.com、bbbb.com两个域名,这两个域名对应着同一台服务器并且共用80端口)

让一台服务器虚拟出来多个主机(网站),例如个人网站的虚拟主机

  1. server{
  2. port:端口
  3. server_name:域名
  4. location
  5. location...
  6. }
3.反向代理,负载均衡(常用)

当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

正向代理:翻墙
服务器A和代理服务器B合作访问需要被访问的服务器C

反向代理:天气查询
服务器A访问服务器B即可
服务器A不知道服务器C的存在
服务器B可以调用任意不同的服务器CDE…,服务器A不受影响

配置:

  1. location / {
  2. proxy_pass http:192.168.184.130:8080
  3. }

负载均衡分类:
1.客户端负载均衡
dubbo+zookeeper
随机算法->地址->发送请求
缺点:集群管理和维护比较难,客户端必须是可控的
2.服务器端负载均衡
Nginx,客户端只需要访问一个地址,由Nginx反向代理管理和维护集群

这两种都有使用,具体情况具体分析使用

配置负载均衡:

严格的按照权重访问,即一下严格按照3:1访问

  1. upstream tomcatlist{
  2. server 192.168.226.130:8080 [weight=3];
  3. server 192.168.226.131:8080 [weight=1];
  4. ....
  5. ip_hash;
  6. //ip_hash是zookeeper提供的一种负载策略,还有很多策略
  7. //ip->hashcode,保证某一台客户端只访问一台服务器
  8. }
  9. server{
  10. location / {
  11. proxy_pass http://tomcatlist;
  12. }
  13. }

默认轮询

4.动静态分离

location ~.(jpg|png|js|css|html){
root /home
}
配置详解图

Nginx的高可用

KeeperAlived实现

它是一个高性能的服务器高可用或热备解决方案,Keepalived主要来防止服务器单点故障的发生问题

Keepalived以VRRP协议为实现基础,用VRRP协议来实现高可用性(HA).VRRP (Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,VRRP协议将两台或多台路由器设备虚拟成一个设备,对外提供虚拟路由器IP(一个或多个)

安装:
1.前置环境:
安装openssl:yum install -y openssl openssl-devel
2.拷贝:
将压缩包放在
/etc/local/路径下
3.解压
tar -zxf keepalived-1.2.20.tar.gz
4.配置
cd keepalived-1.2.20
./configure —prefix=/usr/local/keepalived
5.编译安装
编译:make
安装:makeinstall
6.启动 ./keepalived

配置Keepalived为系统服务

1.新建文件夹
mkdir /etc/keepalived
2.文件拷贝
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig
3.创建软连接
ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
4.设置成开机启动服务
chkconfig keepalived on
5.开启服务
service keepalived start

开始配置高可用Nginx

1.新建心跳脚本文件
/usr/local/keepalived/nginx_check.sh

  1. #!/bin/sh
  2. A=`ps -C nginx --no-header |wc -l`
  3. if [ $A -eq 0 ];then
  4. /usr/local/nginx/sbin/nginx
  5. sleep 2
  6. if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
  7. killall keepalived
  8. fi
  9. fi

2.修改配置文件:
/etc/keepalived/keepalived.conf

  1. ! Configuration File for keepalived
  2. global_defs {
  3. #配置主机名
  4. router_id 192.168.101.134
  5. }
  6. #配置脚本,每隔两秒执行一次脚本
  7. vrrp_script chk_nginx {
  8. script "/usr/local/keepalived/nginx_check.sh"
  9. interval 2
  10. weight -20
  11. }
  12. vrrp_instance VI_1 {
  13. #配置当前节点为Master
  14. state MASTER
  15. #网卡为eth0
  16. interface eth0
  17. #两台电脑的值必须相同
  18. virtual_router_id 51
  19. #本机的真实ip
  20. mcast_src_ip 192.168.101.134
  21. #优先级
  22. priority 100
  23. advert_int 1
  24. #配置组信息,两台服务器必须相同
  25. authentication {
  26. auth_type PASS
  27. auth_pass 1111
  28. }
  29. #配置上面定义的脚本名称
  30. track_script {
  31. chk_nginx
  32. }
  33. #对外的虚拟ip
  34. virtual_ipaddress {
  35. 192.168.101.150
  36. }
  37. }

发表评论

表情:
评论列表 (有 0 条评论,449人围观)

还没有评论,来说两句吧...

相关阅读