Nginx是一款高性能的HTTP和反向代理、负载均衡web服务器。本次在Docker容器中部署三个tomcat,Nginx代理三个tomcat服务(以下称节点)来模拟实现负载均衡效果,配置check模块,在前台查看各个节点的状态。

准备资料

1、创建容器

  • -i 交互模式
  • -d 后端运行
  • -h 容器的hostname
  • --name 容器名
  • --network 网卡
  • --ip IP地址
  • -p 端口映射
  • --privileged=true 和 /usr/sbin/init 为特权模式参数
[root@localhost Tools]# docker run -i -d -h nginx --name nginx --net docker-br0 --ip 172.127.0.205 -p 1580:80 --privileged=true centos:7 /usr/sbin/init

2、上传资料 或者用wget命令下载

  • 进入容器
[root@localhost Tools]# docker exec -it nginx /bin/bash

  • 创建资料存放文件夹
[root@nginx /]# mkdir Tools

  • 更新yum源
[root@nginx /]# yum -y update

  • 安装常用命令及网络相关依赖包(vim zip unzip wget net-tools )
[root@nginx /]# yum -y install vim zip unzip wget net-tools

  • 使用wget下载master、nginx
[root@localhost Tools]# wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master
[root@localhost Tools]# wget http://nginx.org/download/nginx-1.20.1.tar.gz
[root@nginx Tools]# wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.18/bin/apache-tomcat-10.0.18.tar.gz

  • jdk下载需要Oracle账户登录,免费注册后即可下载,上传jdk安装包
  • docker cp 需在宿主机执行
[root@localhost Tools]# docker cp jdk-8u321-linux-x64.tar.gz nginx:/Tools/

3、安装jdk

  • 解压

    • -C 指定解压后的目录
[root@nginx Tools]# tar -zxvf jdk-8u321-linux-x64.tar.gz -C /usr/local/

  • 配置环境变量,使之生效
[root@nginx Tools]# vim /etc/profile
[root@nginx Tools]# source /etc/profile
[root@nginx Tools]# cat /etc/profile | grep export

  • 验证
[root@nginx Tools]# java -version

4、安装3个Tomcat服务

  • 解压后复制三份
[root@nginx Tools]# tar -zxvf apache-tomcat-10.0.18.tar.gz
[root@nginx Tools]# cp -R apache-tomcat-10.0.18 /usr/local/tomcat01
[root@nginx Tools]# cp -R apache-tomcat-10.0.18 /usr/local/tomcat02
[root@nginx Tools]# cp -R apache-tomcat-10.0.18 /usr/local/tomcat03
  • 修改配置文件,主要是调整端口,三个tomcat的端口不一致即可
[root@nginx Tools]# vim /usr/local/tomcat01/conf/server.xml
[root@nginx Tools]# vim /usr/local/tomcat02/conf/server.xml
[root@nginx Tools]# vim /usr/local/tomcat03/conf/server.xml
[root@nginx Tools]# cat /usr/local/tomcat01/conf/server.xml

  • 启动三个tomcat服务
[root@nginx Tools]# /usr/local/tomcat01/bin/startup.sh
[root@nginx Tools]# /usr/local/tomcat02/bin/startup.sh
[root@nginx Tools]# /usr/local/tomcat03/bin/startup.sh

  • 验证
[root@nginx Tools]# ps -ef | grep tomcat

5、安装Nginx

  • 安装依赖包
[root@nginx Tools]# yum -y install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel patch

  • 解压
[root@nginx Tools]# tar -zxvf nginx-1.20.1.tar.gz
[root@nginx Tools]# unzip master

check模块非官方程序,需选择对应版本的补丁进行更新

  • 打补丁,必须在解压后的文件目录
[root@nginx Tools]# cd nginx-1.20.1
[root@nginx nginx-1.20.1]# patch -p1 < /Tools/nginx_upstream_check_module-master/check_1.20.1+.patch

  • 配置

    • --prefix 指定安装Nginx的路径
    • --with-http_stub_status_module 增加stub模块,用来检测集群节点的请求状态
    • --add-module=/Tools/nginx_upstream_check_module-master/ check模块,主动检测集群状态模块
[root@nginx nginx-1.20.1]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --add-module=/Tools/nginx_upstream_check_module-master/

  • 编译及安装
[root@nginx nginx-1.20.1]# make && make install

  • 配置nginx.conf,一般在安装文件的conf目录下,本例为/usr/local/nginx/conf/nginx.conf
[root@nginx nginx-1.20.1]# vim /usr/local/nginx/conf/nginx.conf
worker_processes  1;          # 进程数
events {
worker_connections 1024; # 连接数
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 集群配置
upstream tomcat {
server 172.127.0.205:8080 weight=1 max_fails=3 fail_timeout=30s ;
server 172.127.0.205:8081 weight=1 max_fails=3 fail_timeout=30s ;
server 172.127.0.205:8081 weight=1 max_fails=3 fail_timeout=30s ;
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
}
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
proxy_pass http://tomcat; # 代理配置
}
# check模块配置
location /check_status {
check_status;
access_log off;
}
# stub模块配置
location /stub_status {
stub_status;
access_log off;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
  • 启动nginx
[root@nginx nginx-1.20.1]# /usr/local/nginx/sbin/nginx
  • 验证nginx
[root@nginx nginx-1.20.1]# ps -ef | grep nginx

6、代理、负载状态check、stub模块验证

  • 代理验证

  • 负载状态check

  • stub模块验证

Docker容器Nginx负载均衡配置、check及stub模块安装的更多相关文章

  1. Docker 安装 Nginx 负载均衡配置

    Docker 安装 # 1)安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 # 2)添加Docker软件包源(否则d ...

  2. nginx高性能WEB服务器系列之六--nginx负载均衡配置+健康检查

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  3. Tomcat服务部署与Nginx负载均衡配置

    一.中间键产品介绍 目前来说IBM的WebSphere,Oracle的Weblogic占据了市场上java语言Web站点的部分份额,该两种软件都是商业化的软件,由于性能优越,可靠性高等优点应用于大型互 ...

  4. Tomcat集群,Nginx集群,Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群

    Tomcat集群,Nginx集群,Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群 >>>>>>>>>>>> ...

  5. Nginx负载均衡配置简单配置方法

    http://www.jb51.net/article/121235.htm Nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至不同的Web服务器.下面通过 ...

  6. Mall电商项目总结(二)——nginx负载均衡配置和策略

    1. nginx配置文件 用户在浏览器上输入,http://www.xwld.site/ 实际上是在访问服务器80端口,nginx 监听80端口,将用户的请求转发到8080和9080端口 . upst ...

  7. docker 搭建 nginx负载均衡

    本文描述如何在一台机器上搭建nginx负载均衡,我将会启动3个nginx的docker,分别是1台前置nginx负责分发,后面2台负责处理请求. 首先我切换到/usr/local/docker/文件夹 ...

  8. Nginx负载均衡配置实例详解

    负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦. 负载均衡 先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可 ...

  9. Nginx负载均衡配置实例详解(转)

    负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦. 负载均衡 先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可 ...

随机推荐

  1. zabbix自定义自动发现模板

    需求: 自定义发现磁盘io,并实现监控.其他的业务组件自动发现监控其实也和这个大同小异,自动发现主要逻辑就是你要根据组件规则自动匹配出需要监控的所有组件,再通过传参的方式获取对应组件数据. 自动发现无 ...

  2. asp.net core启动源码以及监听,到处理请求响应的过程

    摘要 asp.net core发布至今已经将近6年了,很多人对于这一块还是有些陌生,或者说没接触过:接触过的,对于asp.net core整个启动过程,监听过程,以及请求过程,响应过程也是一知半解,可 ...

  3. Java语言学习day18--7月24日

    ###01get和set方法 * A.get和set方法 * 年龄已被私有,错误的值无法赋值,可是正确的值也赋值不了,这样还是不行,那肿么办呢?按照之前所学习的封装的原理,隐藏后,还需要提供访问方式. ...

  4. 别像弱智一样提问 Stop-Ask-Questions-The-Stupid-Ways

    https://github.com/xcr1234/Stop-Ask-Questions-The-Stupid-Ways 你真的准备好了吗? 感谢群友 for you 提供 避免 xy-proble ...

  5. 小程序开发之获取客户来源 scene 场景值 手机设备信息

    为什么要获取客户来源 用作数据分析,根据客户来源,做精准转化! 判断客户来源入口方式 1.通过官方的scene场景值 常见场景值 场景值ID 说明 1001 发现栏小程序主入口,「最近使用」列表 10 ...

  6. 『忘了再学』Shell基础 — 12、用户自定义变量

    目录 1.变量定义 2.变量调用 3.变量的修改 4.查看变量 (1)-u选项说明: (2)-x选项说明: (3)set命令说明: 5.变量删除 1.变量定义 变量正确定义. 格式:变量名=" ...

  7. TCP 连接的建立 & 断开

    TCP 连接的建立过程 一开始,客户端和服务端都处于 close 状态. 先是服务端监听某个端口,此时服务端处于 listen 状态. 这个时候客户端就可以发送连接请求报文了. 第一次握手 客户端会主 ...

  8. 观察者模式与Google Guava EventBus实现

    概述 观察者模式又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种. 它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态变化时,会 ...

  9. 封闭的一个多月,老菜鸟的 机械手和AGV 自动搬运小项目总结

    最近上海疫情严重,闲赋在家无事可做,手机里不断的推送一些无脑的谩骂声音,索性找点事情做,将3月份实施的一个自动搬运小项目做一个简单的汇总,便于今后项目实施中积累一些经验.项目需求非常简单,因为能力有限 ...

  10. pwn 之 沙箱机制

    0x00: 简介 沙箱机制,英文sandbox,是计算机领域的虚拟技术,常见于安全方向.一般说来,我们会将不受信任的软件放在沙箱中运行,一旦该软件有恶意行为,则禁止该程序的进一步运行,不会对真实系统造 ...