前言:
首先,我们应该明白一个事情,集群是什么?为什么需要集群?集群的特征有哪些?
什么是集群:
集群就是分散部署在不同的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 有如下输出:
二,tomcat的安装
计划安装tomcat三个实例,分别为tomcat1 ,tomcat2,tomcat3 安装的版本选择为8.5.70(选择此版本的原因为该版本没有爆出安全漏洞,比较安全可靠稳定)
安装目录分别对应为 /usr/local/tomcat1,/usr/local/tomcat2,/usr/local/tomcat3
这三个tomcat都使用systemd启动脚本启动,三个脚本的内容如下:
tomcat1.service
tomcat2:
tomcat3:
将 以上三个文件放置到 /etc/systemd/sytem/目录下即可
三,相关配置文件的修改
配置文件的修改原则上是修改server的监听端口和连接端口,保证这两个端口没有被占用引起冲突即可。
tomcat1的主配置文件server.xml:
vim /usr/local/tomcat1/conf/server.xml (两个地方需要修改,一个是server port 这里监听8005, 连接端口指定为8081)
tomcat2的主配置文件server.xml:
vim /usr/local/tomcat2/conf/server.xml (两个地方需要修改,一个是server port 这里监听8006, 连接端口指定为8082)
tomcat2的主配置文件server.xml:
vim /usr/local/tomcat3/conf/server.xml (两个地方需要修改,一个是server port 这里监听8007, 连接端口指定为8083)
四,测试文件的生成
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
应该会显示对应的首页网页