当前位置: 首页 > news >正文

华为云:实现高可用的负载均衡web集群

华为云:

  2台云主机做负载均衡调度

    》》申请一个虚拟浮动ip,并绑定一个弹性公网ip

    》》将两台云主机绑定到虚拟浮动ip上

  3台web服务器

  1台云服务器做jumpserver(跳板机,用于批量管理)

  

  #购买增强型负载均衡器(配置监听器、后端服务器组)

跳板机

  下载nginx源码包并打包成rpm,更新自建yum仓库

    > 安装rpm-build            

[root@jumpserver ~]# yum -y install rpm-build

    > 生成rpmbuild目录结构

[root@jumpserver ~]# rpmbuild -ba nginx.spec

    > 下载源码到rpmbuild目录下的SOURCES子目录下

[root@jumpserver ~]# wget http://nginx.org/download/nginx-1.12.2.tar.gz
[root@jumpserver ~]# mv /root/nginx-1.12.2.tar.gz /root/rpmbuild/SOURCES/

    > 创建并修改SPEC配置文件

name: nginx    
Version: 1.12.2      
Release: 10
Summary: Nginx is a web server software.    

#Group:        
License: GRL    
URL: www.cloud.com
Source0: nginx-1.12.2.tar.gz    

#BuildRequires:    
#Requires:    

%description
this is a nginx...

%post
useradd nginx

%prep
%setup -q


%build
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module
make %{?_smp_mflags}


%install
make install DESTDIR=%{buildroot}


%files
%doc
/usr/local/nginx/*



%changelog
View Code

    >  使用配置文件创建RPM包

 [root@jumpserver ~]# yum -y install gcc pcre-devel openssl-devel            # 安装依赖

[root@jumpserver ~]#  rpmbuild -ba /root/rpmbuild/SPECS/nginx.spec

 [root@jumpserver ~]# rpm -qpi /root/rpmbuild/RPMS/x86_64/nginx-1.12.2-10.x86_64.rpm         # 测试

    > 将rpm包拷贝到自建的yum 仓库下并更新yum源

[root@jumpserver ~]# cp /root/rpmbuild/RPMS/x86_64/nginx-1.12.2-10.x86_64.rpm /var/ftp/local_repo/
[root@jumpserver local_repo]# createrepo --update .

    > 批量安装nginx

[root@jumpserver ~]# ansible web -m yum -a 'name=nginx'

    > 配置/etc/systemd/system/nginx.service,使nginx支持systemctl控制,并批量下发到所有主机

[Unit]
Description=nginx
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=-/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStio=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target
View Code
[root@jumpserver ~]# ansible web -m copy -a 'src=/root/nginx.service dest=/etc/systemd/system/nginx.service'

    > 批量启动nginx服务

[root@jumpserver ~]#  ansible web -m service  -a 'name=nginx state=started enabled=yes'
[root@jumpserver ~]#  ansible web -m shell  -a 'ss -ltnup | grep *:80'

 

调度器(2台)

  >  安装 keepalived

yum -y install keepalived

  > 修改配置文件 vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from root@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id web-0001
}

vrrp_instance VI_1 {
    state BACKUP               # 另外一台配置为MASTER
    interface eth0
    virtual_router_id 50      # 两台调度器的值相同
    priority 50                        # 优先级,设置不同值
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111        # 密码 必须相同
    }
    virtual_ipaddress {
        192.168.1.100                           # vip 
    }
}

  > 重启服务

systemctl restart keepalived

  > 配置nginx调度  vim /usr/local/nginx/conf/nginx.conf

http {
...
    # web集群
    upstream webserver {
                server 192.168.1.13:80;
                server 192.168.1.14:80;
                server 192.168.1.15:80;
        }


    server {
        listen       80;
        server_name  localhost;
            location / {
            proxy_pass http://webserver;
        }

...
}

 

web集群

  > 配置 vim /usr/local/nginx/conf/nginx.conf     #  ansible  批量部署 nginx配置文件,方便排错


server { listen 80;
    server_name localhost;
  add_header 'Cluster- id ' {{ansible_hostname}}';
    location / 
      {
        proxy_pass http://webserver;
      }
  }
 
 

 

转载于:https://www.cnblogs.com/ray-mmss/p/10479131.html

相关文章:

  • 又火了,小米MIX 3在堪称设计界的奥斯卡荣获2019德国iF设计奖
  • 排序(1):冒泡排序
  • Spring boot (四) 配置文件讲解
  • Mac 上flink的安装与启动
  • 17LaTeX学习系列之---LaTeX的版面设计
  • 企业分布式微服务云SpringCloud SpringBoot mybatis (八)消息总线(Spring Cloud Bus)
  • 将博客搬至CSDN
  • reduce/reduceRight
  • 刚进入编程学习的小菜鸟
  • ES6 module(模块化)
  • jquery.editable-select带输入框的下拉框
  • Docker login失败问题的处理
  • Apache+Tomcat负载均衡
  • Kubernetes系统架构与组件功能
  • python 字符串方法
  • @angular/forms 源码解析之双向绑定
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • Angular 响应式表单之下拉框
  • github指令
  • Java-详解HashMap
  • LeetCode29.两数相除 JavaScript
  • mysql常用命令汇总
  • Spring声明式事务管理之一:五大属性分析
  • webpack+react项目初体验——记录我的webpack环境配置
  • 读懂package.json -- 依赖管理
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 力扣(LeetCode)965
  • 码农张的Bug人生 - 见面之礼
  • 配置 PM2 实现代码自动发布
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 小而合理的前端理论:rscss和rsjs
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • #100天计划# 2013年9月29日
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (十一)图像的罗伯特梯度锐化
  • ***监测系统的构建(chkrootkit )
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .Net 应用中使用dot trace进行性能诊断
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [<MySQL优化总结>]
  • [100天算法】-目标和(day 79)
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [C/C++] -- 二叉树
  • [CERC2017]Cumulative Code
  • [EFI]Dell Latitude-7400电脑 Hackintosh 黑苹果efi引导文件
  • [hive] sql中distinct的用法和注意事项
  • [javaSE] 看知乎学习工厂模式
  • [MySQL]基础的增删改查