目錄
爲什麼要負載均衡
上一篇文章我們實現了集羣共享,共享之後可以通過從機器的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的地址,看看是不是訪問出東西來嘍