Springboot 多實(shí)例負(fù)載均衡部署 觀點(diǎn)
2023-04-23 01:51:19|
來源:博客園
Springboot多實(shí)例負(fù)載均衡部署一、測試代碼:控制層測試代碼:importjava net Inet4Address;importjava net InetAddress;imp
(相關(guān)資料圖)
Springboot 多實(shí)例負(fù)載均衡部署
一、測試代碼:
控制層測試代碼:
import java.net.Inet4Address;import java.net.InetAddress;import java.net.UnknownHostException;@Controller@RequestMapping("/test")public class TestController { @GetMapping("") @ResponseBody public String test() { InetAddress localHost = null; try { // 返回服務(wù)器地址 localHost = Inet4Address.getLocalHost(); return localHost.getHostAddress(); } catch (UnknownHostException e) { return "未知ip"; } }}
本地方法測試:
- maven打好jar包,命名test.jar
二、單機(jī)多容器(docker + nginx)
打好的包放在一臺(tái)linux服務(wù)器上:
/opt/springboot/test.jar
新建dockerFile文件,也放在同一個(gè)目錄下:
/opt/springboot/dockerfile
FROM openjdk:8-jdk-alpineMAINTAINER lzfCOPY *.jar /jar/test.jar# 正常服務(wù)啟動(dòng)CMD ["java", "-Xms200m", "-Xmx200m", "-jar","/jar/test.jar"]
在服務(wù)器上部署兩個(gè)springboot容器。
切換到 /opt/springboot/ 目錄下,制作docker鏡像
docker build -t test .
# 部署的時(shí)候指定network,可以方便用容器名互相訪問docker network create my_network# 我的nginx是用docker部署的,也是在my_network下docker run -d --name test_1 --network my_network testdocker run -d --name test_2 --network my_network test
配置nginx負(fù)載均衡
配置nginx.conf文件:
server { listen 80; location / { proxy_pass http://balance; } } upstream balance{ # weight 代表權(quán)重,可以不設(shè)置。注意:想要禁用這個(gè)server,不能設(shè)置為0,會(huì)報(bào)錯(cuò),可以設(shè)置為backup: server 172.19.0.3:8080 backup; server 172.19.0.3:8080 weight=1; server 172.19.0.4:8080 weight=5; # 如果nginx和test_1和test_2都是在同一個(gè)network下,就能使用容器名進(jìn)行訪問 #server test_1:8080; #server test_2:8080; }# 用以下命令可以查看容器的ip# docker inspect test_1 | grep IPAddress# docker inspect test_2 | grep IPAddress
改nginx配置記得重新加載: nginx -s reload
效果:
關(guān)鍵詞: