具体包括:
1,要求部署一台Nginx和三台Tomcat服务器
2,Ngnix需要实现三种策略:
轮询;
权重,三台服务器的权重为1,3,5;
IP Hash。
最终实现的效果是,本地电脑通过网页访问云服务器时,网页能够体现Ngnix三种策略的结果。

文章目录

  • 1.安装docker
  • 2.安装nginx
  • 3.安装tomcat
  • 4.实现nginx到tomcat的跳转
  • 5.修改tomcat界面
  • 6.实现三种策略
  • 7.实现结果
  • 注意
1.安装docker

输入yum install docker.x86_64开始下载,等待片刻,运行结果:
下载完成后,输入 systemctl start docker.service启动docker 服务

2.安装nginx

拉取nginx镜像,输入docker pull nginx(下载会比较久)

使用 docker run -itd --name myNginx -p 8081:80 nginx:latest /bin/bash 创建一个nginx容器
输入docker ps查看容器id,并记录下来,因为后面需要经常使用

即为这里的30755495ac4c(以后称为nginx_id)
输入docker exec -it 30755495ac4c(替换为你自己的nginx_id) /bin/bash进入容器
输入/usr/sbin/nginx启动nginx

输入exit退出,如果不能退出,按Ctrl+P+Q(不要像我一样直接重启服务器)
打开华为云服务器,服务器列表中的弹性公网ip(以后称为ip)记录下来;打开自己电脑浏览器,输入ip:8081(假设ip为xxx.x.xxx.xx,则输入xxx.x.xxx.xx:8081),访问,出现以下内容即成功

3.安装tomcat

拉取tomcat镜像:docker pull tomcat (很久)

(重复以下操作时从这个地方开始(第一次看到请注意这个位置))
创建第一个tomcat容器:docker run -itd --name myTomcat -p 8086:8080 tomcat:latest /bin/bash
使用docker ps查看容器id(myTomcat对应的那个,以后称为tomcat1_id):c50236a66a5c
并记录下来
输入docker exec -it c50236a66a5c(替换为你自己的tomcat1_id) /bin/bash进入容器
然后执行mv webapps webapps1 && mv webapps.dist webapps && cd bin (因为懒得输入三次,所以合三为一)
输入./startup.sh 启动tomcat

然后输入exit退出容器
重复创建tomcat操作两次
不同的是,创建指令变为
docker run -itd --name myTomcat2 -p 8087:8080 tomcat:latest /bin/bash
docker run -itd --name myTomcat3 -p 8088:8080 tomcat:latest /bin/bash
并使用docker ps查看并记录id(以后称为tomcat_id2以及tomcat_id3)

下面需要用到id的都将用标记符代替(不再使用我自己的数据) 不用担心忘记,会用粗体标出,如果我忘了,当我没说
标记符有nginx_id,tomcat1_id,tomcat2_id,tomcat3_id,ip

本地电脑浏览器分别输入ip:8086,ip:8087,ip:8088,有以下内容即为成功

4.实现nginx到tomcat的跳转

输入 docker exec -it nginx_id /bin/bash
进入Nginx配置server的文件夹
cd /etc/nginx/conf.d
编辑server配置文件
vim default.conf
然后发现:bash:vim:command not found(没发现更好,证明没有出现问题)
如果没出现,跳过下面一行指令
输入apt-get update && apt-get install vim(没错,还是因为懒所以使用&&)
等待完成即可

然后继续vim default.conf,按i进入编辑模式

location / {
root /usr/…
index …
}
修改为
location / {
proxy_pass http://myProxy;
}
可以删掉原有内容,也可以像下图一样注释掉(用#)

退出vim(按Esc退出insert模式,按冒号,输入wq!,回车退出编辑)
接着 cd …返回上一层
vim nginx.conf
进入编辑模式后
在#gzip on;下一行输入
upstream myProxy{
server ip:8086;
server ip:8087;
server ip:8088;
}
修改之后如图所示(图中的#ip_hash;是为了以后修改时方便加的,可以不写)

然后退出vim
再按exit退出容器
重新进入容器docker exec -it ip /bin/bash(这两步好像有点蠢了,但是无伤大雅)
输入/etc/sbin/nginx重新启动nginx即可
然后输入exit退出容器(这次是真的退出了)

5.修改tomcat界面

由于各tomcat都是一样的界面,很难区分哪个对应哪个
这就需要修改界面
输入vi index1.jsp
内容填充为hello tomcat1!
退出
输入vi index2.jsp
内容填充为hello tomcat2
退出
输入vi index3.jsp
内容填充为hello tomcat3
退出
执行以下命令,将jsp文件复制到每个tomcat中
docker cp index1.jsp myTomcat:/usr/local/tomcat/webapps/ROOT/index.jsp && docker cp index2.jsp myTomcat2:/usr/local/tomcat/webapps/ROOT/index.jsp && docker cp index3.jsp myTomcat3:/usr/local/tomcat/webapps/ROOT/index.jsp(为了便于理解,应该是三条分开的,但是我懒)
此时分别进入三个tomcat容器,执行./bin/startup.sh重新启动即可

6.实现三种策略

经过上述操作,已经实现了轮询
输入docker exec -it nginx_id /bin/bash进入容器
然后输入 cd /etc/nginx
vim nginx.conf
修改内容在实现结果中,下面讲述修改完成后如何操作
按exit退出
输入docker restart myNginx(有一点点久)

因为输出有问题(有输出的部分覆盖了上面的内容,而空出的位置没有覆盖上一页的内容,导致出现了不是很合理的内容(因为它是上一页的输出)),所以有点乱,能完成即可
重启容器完成后,重启nginx:
输入docker exec -it 30755495ac4c /bin/bash
然后输入/usr/sbin/nginx
然后就可以去浏览器看结果了!
如果没有内容,那么需要启动tomcat(别问,踩过!)
启动方法:分别进入三个tomcat容器,执行./bin/startup.sh
打开浏览器输入ip:8081,按回车!

7.实现结果

轮询
进入浏览器,输入ip:8081 查看网页内容


按下F5,变为

再次按下F5

继续按F5,发现又变回了tomcat1,即轮询(一二三循环)
权重:
修改nginx.conf (如果不知道修改哪,参考目录中的 6.实现三种策略)
由于只是添加了几行weight,并且修改内容已在图中标出,不再细说(这个东西很难讲的你晓得撒,看图一下就明白了)

再次去浏览器查看结果(不要忘记修改之后的操作,在目录的 6.实现三种策略里面,否则是看不到你想要的东西的)
不断刷新,我得到的三个tomcat出现的顺序是332313232332313232332313232332313232332313
其中1有5次,2有13次,3有24次
比例接近1:3:5
即权重
ip hash:
修改nginx.conf (如果不知道修改哪,参考目录中的 6.实现三种策略)
由于只是添加了一行 ip_hash; ,并且修改内容已在图中标出,不再细说(这个东西也是很难讲的你晓得撒,看图一下就明白了)

再次去浏览器查看结果(不要忘记修改之后的操作,在目录的 6.实现三种策略里面,否则是看不到你想要的东西的)(我没有复制前面的 =.= )

不管刷新多少次,一直是同一个tomcat(不一定是第一个,只要是同一个就成),即:ip是不会变的,所以经过哈希之后也不会变,访问的tomcat也只会是同一个(还有一种情况是你只打开了一个tomcat,其他的都没打开,所以要确保全都打开了再去浏览器验证,别问,做权重和轮询的时候踩过)
这个实验到这里就结束了

注意

并没有结束
我踩过的坑,虽然上面有说过几个了
1.每次重新进入服务器时都需要重新启动docker服务,重新启动nginx以及tomcat
2.如果本地电脑打开ip:端口号时显示拒绝连接或其他问题(连接失败),去华为云控制台搜索虚拟云,进入,在左边打开 访问控制 - 安全组 ,看到default那一行,点击配置规则,在入方向规则中,点击添加规则,TCP,端口可以设置8080-8090(方便,适合像我这样的懒蛋)优先级为1,其他保持默认即可

文章末,给大家个建议,先看注意再看正文

参考(有改善,不是抄!):
安装各种东西
修改界面

docker+nginx+tomcat*3在华为云服务器上的负载均衡相关推荐

  1. 华为云服务器上安装jdk和部署tomcat

    华为云服务器上安装jdk和部署tomcat 一.下载jdk和tomcat 下载jdk 下载tomcat: 进入tomcat官网 二.安装jdk和tomcat 1,用ftp上传安装包到云服务器上 用xs ...

  2. 华为公共云有uos系统服务器,华为云服务器上 公共镜像

    华为云服务器上 公共镜像 内容精选 换一换 由于公有云"敏捷弹性.安全可靠.简单易用.节省成本"等特点,越来越多的企业将自己的IT应用和负载迁移到公有云,如何方便快捷地将已有的服务 ...

  3. 云小课 | 详解华为云独享型负载均衡如何计费

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:华为云独享型负载均 ...

  4. 在华为云服务器上部署的web项目,外网不能访问处理方法

    解决方法: 在服务器ping外网可以ping通 外网ping服务器无法ping通,可以判断是网络问题. 在华为云服务器的安全组添加出入站,点默认的default安全组进入编辑页面 分别在入方向规则和出 ...

  5. 将项目部署到华为云服务器上

    用到的ssh远程软件是 FinalShell 官网直达链接 http://www.hostbuf.com/ 此软件可以上传文件 不需要在另外安装上传插件 如图 Linux基础命令 # 1.进入文件夹 ...

  6. 远程连接华为云服务器上的MySQL

    1.给云服务器设置安全策略 登录华为云-->打开控制台-->进入安全组-->创建新的安全组-->点击配置规则-->修改其中现有的一条规则或新建一条规则-->选择My ...

  7. 往华为云服务器上传文件速度特别慢,怎么办?

    在华为云上买了一台Linux的服务器,带宽1M,且我的笔记本连的是WiFi.用Xshell和WinSCP上传文件的速度简直是天壤之别 1.Xshell **只有不到200KB/s** 2.WinSCP ...

  8. 如何从华为云服务器上找回手机,华为云服务怎么样使用手机找回功能

    电脑登录华为云服务网站点击"手机找回"选择设备点击"定位". 桌面找到手机找回图标,开启手机找回功能(此功能必须登录华为账号,部分机型版本该功能存在于华为云服务 ...

  9. 如何从华为云服务器上找回手机,手机万一丢了,数据该如何找回?华为云空间来帮你...

    这些天的开学季,总让我怀念起多年前步入大学校园的样子.那时候,互联网才刚刚开始,智能手机不那么普遍,同学们用的还是功能机.那时候的手机传输数据还需要数据线,丢了手机几乎没办法找回来,更别提找回手机中的 ...

最新文章

  1. MySQL 用 limit 为什么会影响性能?
  2. HTML 中有用的字符实体
  3. 关键短语抽取及使用BERT-CRF的技术实践
  4. DeepMind新语言模型SUNDAE:教自动编码器学会「自我纠正」,WMT14英德互译任务获SOTA...
  5. from import python3_《Python语言程序设计》 —3.3.2 from import
  6. 设计模式学习笔记——目录
  7. cygwin使用笔记
  8. tc/traffic control 网络控制工具
  9. Chrome 将不再允许 https:// 页面加载 HTTP 资源
  10. STM32工作笔记0052---串口通信原理--UART
  11. CentOS/Ubuntu 下 MySQL 的安装
  12. mysql-查询一天,一周,一月,一年,以及mysql的基本日期函数
  13. idea2020配置
  14. 自然语言处理要解决的问题
  15. twrp gui/actions.cpp 中的功能实现 tw_action ,tw_action_param ,第二章
  16. 计算机怎么更改网络密码,该如何修改自家宽带帐号的密码?
  17. Oracle之学习if条件选择语句
  18. opnet如何进行C语言编程,OPNET学习小记(五)
  19. 101-150的质数
  20. 新零售O2O商城系统要怎么开发,这些功能都要有

热门文章

  1. react+antd解决报错:Module not found: Can't resolve 'antd/es/affix'
  2. 喜马拉雅欲“摘星”,可耳朵经济难“独立”
  3. 长安“战疫”网络安全卫士守护赛crypto
  4. C++实验03(03)组合类:Triangle类与Point类
  5. nyoj 144 小珂的烦恼
  6. php i pwd是什么意思,pwd命令符的意思
  7. miui怎么用第三方图标包_快来领取你的图标包~
  8. Android如何去掉系统照相,前置摄像选项(图标)
  9. elementui中多选下拉框 multiple属性时 编辑表单如何显示默认值问题解决 以及校验验证问题
  10. 七牛云CNAME设置,七牛云绑定域名。