Docker安装部署nginx,Tomcat。并通过Nginx实现反向代理,负载均衡,动静分离,高可用性。

1.CentOS 安装Docker

Centos7上安装docker - 风止雨歇 - 博客园

2.Docker 安装 Nginx

2.1拉取镜像(直接拉最新版就好了)

docker pull nginx

如果想指定版本例如想拉取1.21.6版本的直接后面加英文冒号加版本号就行:

docker pull nginx:1.21.6

2.2镜像生成容器。

docker run -d --name nginx -p 80:80 -v nginx

-d            表示后台运行。 
--name nginx  表示起个名字叫nginx
-p 80:80      表示端口映射 :第一个80是你本机的端口号,第二个80是固定的是docker中nginx默认端口
nginx         表示你的镜像名字 如果你pull的1.21.6版本的话这里的命令应该是:
                    docker run -d --name nginx -p 80:80 nginx:1.21.6
-v.           表示路径映射:配置文件每次要跑到容器中修改是很麻烦的所以这里最好还是配置路径映射。 因为是测试学习用的。所以一些重要数据和日志没有做路径映射。只做了配置文件的映射。 

2.3验证docker启动成功与否

docker ps

3.nginx反向代理

思路:通过配置配置文件完成反向代理。

3.1任务目标:本机访问浏览器访问www.123.com 跳转到部署在192.168.1.8:8080服务器的tomcat。

3.2准备:在192.168.1.9搭建nginx 并通过192.168.1.9成功访问nginx首页,

                在192.168.1.8搭建tomcat 并通过192.168.1.8:8080成功访问tomcat

下面介绍如何搭建tomcat

3.3 Tomcat搭建

3.3.1CentOS安装docker

Centos7上安装docker - 风止雨歇 - 博客园

3.3.2 Docker安装Tomcat

a.拉取镜像。

docker pull tomcat:8.0.52

b.镜像生成容器。

docker -d --name tomcat -p 8080:8080 tomcat:8.0.52

c.查看是否启动

docker ps

d.问题排查

如果docker ps 发现服务正常启动但是本机无法访问tomcat可能是因为以下问题导致:

1.镜像版本问题
docker pull tomcat
在docker pull tomcat时没有选择版本。此时docker会自动拉取最新的tomcat版本。 而最新的tomcat版本中webapps目录下是空的,所有文件被放在一个叫webapps.dist 文件夹下。会导致无法访问。 
解决办法:
a.进入docker中的tomcat
docker exec -it tomcat bash 或者docker exec -it /bin/bash
b.删除webapps目录
rm -rf webapps
c.重命名webapps.dist 为webapps
mv webapps.dist webapps 
d.退出docker 中的tomcat
exit

2.防火墙限制
解决方案(两个都可以):a.关闭防火墙  b.为防火墙开通端口
a.关闭防火墙
systemctl stop firewalld
b.为防火墙开端口
    1.开放端口
    firewall-cmd --zone=public --add-port=8080/tcp --permanent  
    2.配置立即生效
    firewall-cmd --reload  

3.如果你用的是云服务器。可能是因为开放规则的显示。 
此时就需要你登陆你的阿里云或者腾讯云的管理界面。添加规则。如下图所示

此时准备工作完毕。

3.4需要让本机访问www.123.com时跳转到我们搭建的服务器

需要在本机配置ip和域名的对应地址

本机为mac

在本机(测试机)配置。配置tomcat服务器ip和www.123.com域名绑定。

vi /private/etc/hosts

添加:
192.168.1.8 www.123.com

修改nginx配置文件实现反向代理:


server{
  listen 80;
  server_name 192.168.1.8;

  location / {
    root html;
    proxy_pass http://192.168.9:8080;
    index index.html,index.htm;
  }
}

 4.nginx实现负载均衡

1.任务目标。访问同一地址时候会从不同服务器获取文件

准备:两台tomcat服务器。

一台地址192.168.1.8分别在webapps目录下建立文件夹test,在test建立文件a.html,输入内容192.168.1.8。

一台地址192.168.1.7分别在webapps目录下建立文件夹test,在test建立文件a.html,输入内容192.168.1.7。

修改nginx配置文件

upstream myserver {
  server 192.168.1.7:8080;
  server 192.168.1.8:8080;
}
server{
  listen 80;
  server_name 192.168.1.9;

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


注:8 是tomcat1,7是tomcat2,9是nginx服务器

配置不同的负载均衡规则:

0.轮询。

上面默认就是轮询的方式。 请求一次是8,再请求一次就是7.

1.权重。访问一次7,访问2次8;

upstream myserver {
  server 192.168.1.7:8080 weight=1;
  server 192.168.1.8:8080 weight=2;
}
server{
  listen 80;
  server_name 192.168.1.9;

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


注:8 是tomcat1,7是tomcat2,9是nginx服务器

2.ip_hash

如果某ip访问第一访问nginx转发到7.那以后都会访问7,不会切换到8.

使用ip_hash可以部分解决分布式session同步存储问题。 但是限制了负载均衡。

upstream myserver {
  ip_hash;
  server 192.168.1.7:8080;
  server 192.168.1.8:8080;
}
server{
  listen 80;
  server_name 192.168.1.9;

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


注:8 是tomcat1,7是tomcat2,9是nginx服务器

3.fair

通过访问哪个服务器的时间长短决定。

注:fair在最新版的nginx不支持。 可自行下载旧版nginx测试。

upstream myserver {
  server 192.168.1.7:8080;
  server 192.168.1.8:8080;
  fair;
}
server{
  listen 80;
  server_name 192.168.1.9;

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


注:8 是tomcat1,7是tomcat2,9是nginx服务器

5.动静分离

思想:nginx可以通过文件名后缀实现区分不同类型文件来重定向到不同服务器。 

准备:一台nginx服务器9     建立测试文件   /data/test/web/a.html 和/data/test/images/a.png

a.html 可随便输入 test。

a.png      可自行上传图片

修改nginx配置

server{
    listen     80;
    server_name 192.168.1.9;



    location /web/ {
        root /data/test/;
        index index.html index.htm;
    }

    location /images/ {
        root /data/test/;
        autoindex on;
    }

}

1.修改配置后可通过192.168.1.9/web/a.html访问到页面

2.可通过192.168.1.9/images/a.png      访问到图片

3.可通过192.168.1.9/images/  访问到该文件夹目录。 (因为配置了autoindex on)

注意:images后面有个斜杠/

5.高可用

通过keepalived实现多个nginx管理

1.  找两台服务器192.168.1.10 和192.168.1.9安装nginx和keepalived

keepalived安装

yum install -y keepalived

如果安装失败则可能是因为本地没有依赖库

下载一下依赖库,然后安装。

yum install -y libnl*
yum install -y libnfnetlink-devel zlib zlib-devel gcc gcc-c++ openssl openssl-devel openssh

安装成功之后可以设置为开机自动启动。

service keepalived start
关闭keepalived服务systemctl stop keepalived.service
# 配置开机自启动
systemctl enable keepalived

可以通过命令查看是否安装成功

keepalived --version

然后配置keepalived

你可能感兴趣的:(服务器部署,服务器)