今天开始做任务8的第3和第4部分:
3.部署两台Service,在WEB中随机访问任意一台Service。
4.部署两台WEB,通过Nginx配置两台WEB随机访问,两台WEB可以随机访问两台Service。
首先需要部署四个工程,两个Web端和两个Service端。
两个Web端工程分别部署到Jetty:run的8080端口和tomcat的8081端口;
两个Service端工程分别在配置文件中配1099端口和1199端口;
在Nginx中,相应的做两个反向代理:
Web端是把80端口代理到8080和8081;
Service端是把90端口代理到1099和1199端口;
upstream web {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
upstream server {
server 127.0.0.1:1099;
server 127.0.0.1:1199;
}
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
proxy_pass http://web;
}
}
server {
listen 90;
server_name localhost2;
location / {
root html;
index index.html index.htm;
proxy_pass http://server;
}
}
运行后Web端正常,Service端报错,说端口被占用,查看端口后发现,90端口有两个进程在监听,一个是Nginx,一个是Tomcat(Service都在tomcat上),查百度说是端口不能有其他应用。
后来因为任务上说的是Web端用Nginx代理,Service端没说,就用生成随机数的方法先简单实现了。
因为两个端口是1099和1199,写一个生成0和1随机数的类:
public class Random01 {
public static int random(){
return ThreadLocalRandom.current().nextInt(0, 2);
}
}
把配置文件的URL路径上加上这个随机数:
<bean id="userService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceUrl" value="rmi://localhost:1#{T(tech.zengtian.springrmi.util.Random01).random()}99/UserService"/>
<property name="serviceInterface" value="tech.zengtian.springrmi.service.UserService"/>
</bean>
确认端口被tomcat监听:

最后在服务器上用80端口访问页面和服务接口,都正常,可以通过一个地址访问两个Web服务器,两个服务器也是随机访问两个Service服务器。
问题:端口问题
总结:任务8完成度比较一般,但也已经用了好几天。
评论