Java集群:单体架构升级到集群架构(一)使用NGINX建立集群

对于大厂的IT技术人员来说,微服务架构是天天都在使用,滚瓜烂熟了。而对小厂的菜鸟程序员来说,我们天天做的都是CRUD,对我们来说集群、分布式、微服务也只是头脑中一个模糊的概念。我们写的大多是单体架构的系统,运行在一台服务器上,如果用户量增加了,服务器撑不住了,我们就加配置吧,反正阿里云腾讯云现在加配置也很容易。但是如果有一天(希望所有菜鸟都有这么一天),我们的用户数增加太快太多,使用最高配置的服务器还是撑不住,对我们来说这算不算是幸福的烦恼?――幸福的是老板,烦恼的却是我们。

这种情况下,我们想到了使用微服务,于我们开始学习spring cloud alibaba,就是不知道在我们学会之前,我们的服务器要崩溃多少次,就怕老板一生气把我们杀了祭天。所以说临时抱佛脚是不行的,学习要趁早!那么这时候,什么才是比较快的解决方法呢?我想可能就是使用集群架构。集群架构学起来相对容易,代码修改量也会少一些。

今天我们首先来建一个简单的集群,如下图所示:

Java集群:单体架构升级到集群架构(一)使用NGINX建立集群_第1张图片

总共三台电脑,一台安装NGINX,两台安装TOMCAT。这两个TOMCAT运行我们的单体应用程序,NGINX接受浏览器发来的请求,再把请求轮流转发给其中一台TOMCAT处理。如果您不理解这段话,也没关系,咱们开始动手操作,做完之后,你就明白了。没有三台电脑的同学,可以用虚拟机。要么就在一台电脑上操作也行,这时两个IP都要改成127.0.0.1

GitHub:  GitHub - Dengxd/JavaCluster  所有源码都在这里,GitHub经常连不上,要多刷新几次

安装NGINX

因为所有程序员都会用WINDOWS,而有部分程序员不会用LINUX,所以我选择了WINDOWS7来安装。

NGINX下载地址:nginx: download

Java集群:单体架构升级到集群架构(一)使用NGINX建立集群_第2张图片

Stable version是稳定版,选择这个版本。下载下来是一个文件nginx-1.22.1.zip,解压之后,如下图所示:

Java集群:单体架构升级到集群架构(一)使用NGINX建立集群_第3张图片

打开文件夹conf里面的nginx.conf文件,找到这几行:

server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

改成这样:

upstream mytomcat {
		server 192.168.1.200:8000;
		server 192.168.1.201:8001;
    }
    server {
        listen       80;
		server_name  localhost;
		
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://mytomcat;
        }

保存一下,NGINX就配置好了。

在这几行代码里

server 192.168.1.200:8000;

server 192.168.1.201:8001;

这两行就是我们两个TOMCAT的IP和端口,如果你要多加几个TOMCAT,直接多加几行就可以了。如果你没有三台电脑,只在一台电脑上操作,就把两个IP地址都改成127.0.0.1

注意事项:在生产环境,server_name  localhost; 这一行要把localhost改成您的域名

mytomcat其实就是给集群起个名字,可以按自己的习惯取名,这个名字会用在这一行:proxy_pass http://mytomcat;

改完之后要测试配置文件nginx.conf是否正确

使用nginx –t 命令进行测试:

Java集群:单体架构升级到集群架构(一)使用NGINX建立集群_第4张图片

如上图,出现“syntax is ok”,“test is successful”就说明测试成功,如果没出现这两行,就说明nginx.conf有错误,要修改错误直至测试成功。

写个简单的单体程序

这个程序使用Spring boot框架,这货自带了TOMCAT,省了不少麻烦。程序的功能是在网页上显示端口号,要么显示8000,要么显示8001

主要代码如下:

static String port;
public static void main(String[] args) throws Exception{
    SpringApplication app = new SpringApplication(MainApplication.class);
    Environment env = app.run(args).getEnvironment();
    port=env.getProperty("server.port");//获取端口号
    System.out.println(port);
}

@RequestMapping("/")
@ResponseBody
public String test(HttpServletRequest request, HttpServletResponse response){
    return port;//返回端口号
}

main方法在启动程序的时候获取端口号,test方法在用户访问时返回端口号

在两台业务服务器上运行程序

我们把程序打包,复制到两台Tomcat业务服务器上。

IP为182.168.1.200那台服务器用命令:java -jar ShowPort-1.0-SNAPSHOT.jar  --server.port=8000 启动程序。然后在服务器上用浏览器访问:http://localhost:8000/  ,如果网页显示8000,就说明程序正常:

Java集群:单体架构升级到集群架构(一)使用NGINX建立集群_第5张图片

IP为182.168.1.201那台服务器用命令:java -jar ShowPort-1.0-SNAPSHOT.jar  --server.port=8001 启动程序。然后在服务器上用浏览器访问:http://localhost:8001/  ,如果网页显示8001,就说明程序正常。

在NGINX服务器上启动NGINX

使用命令nginx启动服务:

Java集群:单体架构升级到集群架构(一)使用NGINX建立集群_第6张图片

注意:如果您想停止NGINX,不能直接关掉这个CMD窗口。您得再开一个CMD窗口,然后用命令nginx -s stop才能能关闭NGINX:

Java集群:单体架构升级到集群架构(一)使用NGINX建立集群_第7张图片

在NGINX服务器上测试集群

现在我们在NGINX那台服务器上启动浏览器,输入网址:http://localhost/   ,

可以看到网页显示8001 :

Java集群:单体架构升级到集群架构(一)使用NGINX建立集群_第8张图片

我们在浏览器里多开几个标签页,就会看到有的显示8000,有的显示8001

Java集群:单体架构升级到集群架构(一)使用NGINX建立集群_第9张图片

这样,我们的集群就配置成功了。下回我们来实现session共享。

你可能感兴趣的:(集群,java,集群,nginx)