目录
为什么要负载均衡
上一篇文章我们实现了集群共享,共享之后可以通过从机器的ip+我们配置的端口来访问tomcat,但事实是用户根本不知道ip是啥,这时候就需要我们负载均衡了。通过负载均衡提供一个可以被外部访问到的ip,屏蔽具体请求到那台服务器的细节。
负载均衡
1.查看master节点上是否有service服务
如果有service服务我们要先删除掉,进行重新部署。可以看到当前并没有service服务,所以我们不用进行delete操作
2.进入tomcat-service目录
cd /usr/local/k8s/tomcat-service
3.编辑tomcat-service.yml文件
vim tomcat-service.yml
进去之后,我们注释两行代码,然后保存退出即可
4.创建service容器
kubectl create -f tomcat-service.yml
5.查看当前service的部署情况
kubectl get service
可以看到,service已经重新部署成功了~
6.查看service的详细信息
kubectl describe service tomcat-service
可以看到,配置成功后达到了通过访问主机8000端口分别访问另外两台从机上部署服务的8080端口,我们再测试下
7.测试容器内部的端口转发
首先进入www-data目录下
cd /usr/local/data/www-data/
再里面创建一个文件夹
mkdir test
cd进去
cd test
新建一个jsp文件
vim index.jsp
在里面写上当前获取到的ip地址命令,这样每次我们访问这个文件时,就知道是哪台服务器提供的服务了
<%=request.getLocalAddr()%>
我们输入下面的命令访问jsp文件,10.100.22.231是master服务器的容器虚拟IP,我们看看这次访问是哪台服务器给master提供的服务
curl 10.100.22.231:8000/test/index/jsp
可以看到我们的请求被随机的分配到两个node节点上
支持外网访问的端口转发
1.下载Rinetd
首先我们切换下目录
cd /usr/local
通过下面的命令下载Rinetd的源码包
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
下载成功之后我们解压缩这个包
tar -zxvf rinetd.tar.gz
2.修改Rinetd的配置文件
输入命令进入到rinetd文件夹下
cd rinetd
执行命令修改rinetd.c文件
sed -i 's/65536/65535/g' rinetd.c
3.安装Rinetd
首先我们要创建一个目录,这个目录是Rinetd所必须的
mkdir -p /usr/man/
然后安装C语言编译器
yum install -y gcc
安装成功gcc之后我们终于可以安装Rinetd了
make && make install
如同所示则安装成功
4.配置Rinetd的路由转发
编辑vim /etc/rinetd.conf配置文件
vim /etc/rinetd.conf
写上如下内容
0.0.0.0 8000 10.100.22.231 8000
4个0代表配置好的端口对所有ip开发,
8000代表用8000端口来接受外部来的访问请求
10.100.22.231 8000是集群master机器中service容器的ip和端口
5.测试
我们在浏览器上直接输入master服务器的ip:8000端口在后面再加上之前我们些的jsp的地址,看看是不是访问出东西来喽