前言:

首先,我们应该明白一个事情,集群是什么?为什么需要集群?集群的特征有哪些?

什么是集群:

集群就是分散部署在不同的N台服务器上对外提供特定服务的服务器集合。通常,也叫分布式集群,比如,weblogic集群,这个集群就是指的是在N台(N通常是奇数)服务器上,每一台服务器都部署一个weblogic实例,发布一个特定资源,比如,统一权限认证。在哪个服务器上访问weblogic都如同在一个固定的服务器上访问一样,session,token都是集群间同步共享的。

为什么需要集群:

那么,在实践过程中,我们可能经常有这样的需求,服务要求稳定运行,不会出现各种意外情况,也就是高可用,比如,某个比较重要的网页服务,不希望它会因为它所在的服务器因为磁盘耗尽这样的突发情况,导致服务停止,或者是因为用户的使用量突然激增,服务器内存资源耗尽,导致服务不可用。(总之,就是避免服务意外宕机,服务什么时候都可用)

也就是我们常说的 三高,高可用,高负载,高性能,这三高里,高可用是最基本的东西,因为,可用才是最基本的需求呀。

而集群就是让服务三高的东西,这也就是我们需要使用集群的理由。但,有一点需要注意,任何时候都要量体裁衣,比如,日均用户1 20个人的http服务,你需要部署集群吗? 答案是明显不需要的,因为,集群是要吃资源的,吃硬件资源,软件资源的。

集群的一般性特点:

说了半天,集群的特征是什么呢?

(1)集群是各个子节点可以自由的通信,比如,MySQL集群,节点A能够告诉节点B自身的状态是什么样的,节点B也能够通知节点A自己是什么样的状态了,数据的流入流出就好像一个单机MySQL一样,在哪个节点查询出的数据都是一样的结果。(节点有时候也可以称呼为实例。这个是cluster集群里的独有概念了)

(2)集群一般不是由单独的一个服务器组成,是在N个服务器上安装N个实例,并且一般是奇数个实例,

(3)集群一般启动是有先后顺序的,并要求是在同一个时间服务器内,统一管理时间。(对时间非常敏感,因为节点之间要通信的啊,两边时间不对,会造成信息混乱的。)

(4)高可用,高性能,高负载是由于集群搭建时候的架构设计就考虑了这些问题,因此,集群一般是天然三高的,性能方面无疑是会比单实例(节点)高很多的。

(5)集群的架构设计决定了集群的管理要复杂,多变,想要管理好一个集群需要更多的知识沉淀。

(6)集群更易于扩展,增强,比如,MySQL集群的扩展,增加一个服务器资源,然后在主节点注册好,然后同步好数据即可。(其实说的是容易,做起来你就知道有多难啦!~~哈哈)




tomcat伪集群的搭建:

其实,tomcat 伪集群也可以称之为tomcat多实例(节点),也就是看起来像是一个集群,有集群的部分特征,其实,只是多个实例的堆叠,因为没有集群中最重要的节点间通信,也就是说,这些堆叠出来的节点是单独的,没有灵魂的,没有形成一个整体,比如,节点1发布一个资源a,节点2发布一个资源a,节点3发布一个资源b。但,如果资源a是一个有用户管理的项目,你登陆节点1,在登陆节点2,还是未登陆状态,web资源间的session(token)并没有共享,这里,就是我们叫这种集群是伪集群的根本原因。(准确来说,应该叫多实例)

实验环境简介:

在虚拟机centos7.2.1511版本里,ip地址为192.168.88.11,安装tomcat1,tomcat2,tomcat3,负载均衡可使用nginx或者Apache(负载均衡就不演示啦)

实验步骤:

一,在192.168.88.11这台服务器上安装jdk

首先,关闭防火墙和selinux,防止不必要的干扰。

systemctl disable firewalld &&systemctl stop firewalld 

临时关闭selinux  setenforce 0 (永久关闭,需要重启服务器,vim /etc/selinux/config  SELINUX=disabled ,保存这个文件,重启服务器即可)

jdk的安装没什么好说的,jdk的安装路径设置为 /usr/local/jdk 

jdk的测试为:输入命令 java -version 有如下输出:

[root@hdp-1 ~]# java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)

二,tomcat的安装

计划安装tomcat三个实例,分别为tomcat1 ,tomcat2,tomcat3  安装的版本选择为8.5.70(选择此版本的原因为该版本没有爆出安全漏洞,比较安全可靠稳定)

安装目录分别对应为 /usr/local/tomcat1,/usr/local/tomcat2,/usr/local/tomcat3

这三个tomcat都使用systemd启动脚本启动,三个脚本的内容如下:

tomcat1.service

[Unit]
Description=web server tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
Environment="JAVA_HOME=/usr/local/jdk"
PIDFile="/usr/local/tomcat1/bin/tomcat.pid"
ExecStart=/usr/local/tomcat1/bin/startup.sh
ExecReload=/bin/kill -s HUP
ExecStop=/bin/kill -s QUIT
PrivateTmp=true
[Install]
WantedBy=multi-user.target

tomcat2:

[Unit]
Description=web server tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
Environment="JAVA_HOME=/usr/local/jdk"
PIDFile="/usr/local/tomcat2/bin/tomcat.pid"
ExecStart=/usr/local/tomcat2/bin/startup.sh
ExecReload=/bin/kill -s HUP
ExecStop=/bin/kill -s QUIT
PrivateTmp=true
[Install]
WantedBy=multi-user.target

tomcat3:

[Unit]
Description=web server tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
Environment="JAVA_HOME=/usr/local/jdk"
PIDFile="/usr/local/tomcat3/bin/tomcat.pid"
ExecStart=/usr/local/tomcat3/bin/startup.sh
ExecReload=/bin/kill -s HUP
ExecStop=/bin/kill -s QUIT
PrivateTmp=true
[Install]
WantedBy=multi-user.target

将 以上三个文件放置到 /etc/systemd/sytem/目录下即可

 

三,相关配置文件的修改

配置文件的修改原则上是修改server的监听端口和连接端口,保证这两个端口没有被占用引起冲突即可。

tomcat1的主配置文件server.xml:

vim  /usr/local/tomcat1/conf/server.xml  (两个地方需要修改,一个是server port  这里监听8005, 连接端口指定为8081)

<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />


<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

 

tomcat2的主配置文件server.xml:

vim  /usr/local/tomcat2/conf/server.xml  (两个地方需要修改,一个是server port  这里监听8006, 连接端口指定为8082)

<Server port="8006" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />

<Connector port="8082" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

tomcat2的主配置文件server.xml:

vim  /usr/local/tomcat3/conf/server.xml  (两个地方需要修改,一个是server port  这里监听8007, 连接端口指定为8083)

<Server port="8007" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />

<Connector port="8083" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

四,测试文件的生成

[root@hdp-1 ~]# echo "8001---------=====">/usr/local/tomcat1/webapps/index.html 
[root@hdp-1 ~]# echo "8002---------=====">/usr/local/tomcat2/webapps/index.html
[root@hdp-1 ~]# echo "8003---------=====">/usr/local/tomcat3/webapps/index.html

tomcat服务的开机启动和正式启动

systemctl enable tomcat1 tomcat2 tomcat3 && systemctl start tomcat1 tomcat2 tomcat3 

 五,测试

打开浏览器,分别输入

192.168.88.11:8081/index.html

192.168.88.11:8082/index.html

192.168.88.11:8083/index.html

应该会显示对应的首页网页