目录
1、安装jdk
1、上传jdk
2、在Linux系统下的opt目录中查看软件包是否上传成功
[root@hadoop103 sbin]# ls /opt/software/
3、 解压JDK到/opt/module目录下
[root@hadoop103 software]# tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
4、配置JDK环境变量
(1)新建/etc/profile.d/my_env.sh文件
vim /etc/profile.d/my_env.sh
添加如下内容
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
(2)保存后退出
:wq
(3)source一下/etc/profile文件,让新的环境变量PATH生效
source /etc/profile
6、测试JDK是否安装成功
2、安装tomcat
注意:linux下运行tomcat需要系统安装jdk,并配置JAVA_HOME环境变量指向jdk安装目录
#上传tomcat至opt目录
cd /opt
#解压tomcat
tar -zxvf apache-tomcat-8.5.32.tar.gz
#解压后的tomcat名字太长了,改简单点
mv apache-tomcat-8.5.32 tomcat
#进入tomcat的bin目录
cd /opt/tomcat/bin
#启动tomcat
./startup.sh
修改tomcat端口号
#修改tomcat端口号
vim /opt/tomcat/conf/server.xml
修改三个地方的端口:
1、8005端口是用来关闭Tomcat服务的端口,如果此端口被占用,可在配置文件中将8005改成其他端口
2、此连接器是负责建立HTTP连接。再通过浏览器访问Tomcat服务器的web应用时使用的就是这个端口
3、 此连接器负责和其他的HTTP服务器建立连接,再把Tomcat与其他的HTTP服务集成时需要使用此连接器。如果此端口被占用,可在配置文件中将8009改成其他端口
修改webapps/ROOT/index.jsp
tomcat做成服务
[Unit] #[Unit] 表示这是基础信息
Description=Tomcat #Description 是描述
After=network.target #After 是在那个服务后面启动,一般是网络服务启动后启动
#Description 是描述
[Service] #[Service] 表示这里是服务信息
Type=forking #Type 是服务类型
PIDFile=/usr/local/tomcat/tomcat.pid #PIDFile 是服务的pid文件路径, 开启后,必须在tomcat的bin/catalina.sh中加入CATALINA_PID参数
Environment=JAVA_HOME=/opt/module/jdk1.8.0_212
Environment=CATALINA_PID=/usr/local/tomcat/tomcat.pid
ExecStart=/usr/local/tomcat/bin/startup.sh #ExecStart 是启动服务的命令
ExecReload=/usr/local/tomcat/bin/catalina.sh restart #ExecReload 是重启服务的命令
ExecStop=/usr/local/tomcat/bin/catalina.sh stop #ExecStop 是停止服务的指令
[Install] #[Install] 表示这是是安装相关信息
WantedBy=multi-user.target #WantedBy是以哪种方式启动:multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。
3、安装nginx
安装依赖包
编译环境gcc g++ 开发库之类的需要提前装好
这次用在线安装的方式,在终端执行以下命令
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
安装pcre
#把pcre复制到opt目录下,解压缩
tar -zxvf pcre-8.35.tar.gz
cd pcre-8.35
./configure
make && make install
#可以不做
cd /usr/local/lib
ln -s /usr/local/lib/libpcre.so.1 /lib64/
安装nginx
#复制nginx-1.10.3.tar.gz到opt下
tar -zxvf nginx-1.10.3.tar.gz
mv nginx-1.10.3 nginx
cd nginx
./configure
make && make install
#测试配置文件安装成功:
/usr/local/nginx/sbin/nginx -t
修改ngnix的配置文件
vi /usr/local/nginx/conf/nginx.conf
以下红线中的地方要新增:
在这个地方要增加proxy_pass http://aaa;
这里的aaa对应上面那个图里面的aaa
nginx设置为服务
#进入配置文件的目录
cd /usr/lib/systemd/system
#修改nginx的服务配置
vim nginx.service
#按i进入修改,修改的文本内容如下
[Unit] #说明
Description=nginx #服务名
After=network.target #服务类别
[Service] #参数配置
Type=forking #ng后台运行的类型
ExecStart=/usr/local/nginx/nginx/sbin/nginx -c /usr/local/nginx/nginx/conf/nginx.conf #启动命令,用自己的路径
ExecReload=/usr/local/nginx/nginx/sbin/nginx -s reload #重启命令,用自己的路径
ExecStop=/usr/local/nginx/nginx/sbin/nginx -s quit #停止命令,用自己的路径
PrivateTmp=true #启用私有化临时目录,保证安全性,避免和其他服务冲突
[Install]
WantedBy=multi-user.target
测试
在宿主机访问虚拟机ip,多访问几次,会发现有三分之一的几率主界面出现8080,三分之二的几率主界面出现8090。
4、安装keepalived
keepalived安装步骤:
tar -xzvf keepalived-2.2.2.tar.gz
yum -y install gcc
yum -y install openssl openssl-devel
cd keepalived-2.2.2
./configure --prefix=/usr/local/keepalived
make && make install
如果出现以下错误:*** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.
原因分析:
出现该错误主要原因缺少libnl核心库,只需要安装libnl 和 libnl-devel即可。
解决方案:
安装libnl 和 libnl-devel:
yum -y install libnl libnl-devel
将配置文件拷贝到系统对应的目录下:
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /opt/software/keepalived-2.2.4/keepalived/etc/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
加入开机启动项
systemctl enable keepalived
配置leepalived.conf配置文件
一个功能比较完整的常用的 keepalived 配置文件,主要包含以下三块:
! Configuration File for keepalived
#全局定义块
global_defs {
...
}
#VRRP 实例定义块
vrrp_instance VI_1 {
...
}
#虚拟服务器定义块
virtual_server 10.10.10.2 1358 {
...
}
(1)全局定义块
这部分主要用来设置Keepalived的故障通知机制和Router ID标识。示例代码如下:
(2)VRRP 实例定义块·
参数说明:
1)第15行:定义一个vrrp_install实例,名称为VI_1
2)第16行:表示该实例的角色状态,有MASTER和BACKUP两种主备状态。
3)第17行:对外提供服务的网络接口,如eth0,ens33
4)第18行:虚拟路由ID标识,主备服务器配置中相同实例的ID必须一致,否则将出现脑裂问题。
5)第19行:priority表示实例优先级。数字越大,优先级越高。
6)第20行:advert_int为同步通知间隔。主备之间通信检查的时间间隔,默认为1秒。
7)第21~24行:权限认证配置。
8)第25~29行:虚拟IP地址;可以配置多个IP,每个IP占一行。注意,这里的IP就是在工作中需要和域名绑定的ip,即可配置的高可用服务监听的ip保持一致。
(3)虚拟服务器定义块
(3)虚拟服务器定义块
参数说明:
1)virtual_server:定义一个虚拟服务器,这个ip是virtual_address中定义的其中一个。语法格式:ip+空格+服务端口
第58行:delay_loop 6
健康检查时间间隔,单位:秒
第59行:lb_algo rr
负载均衡调度算法,互联网应用常用方式为 wlc或rr
第60行:lb_kind NAT
负载均衡转发规则。包括DR、NAT、TUN 3种,一般使用路由(DR)转发规则。
第61行:persistence_timeout 50
http服务会话保持时间,单位:秒
第62行:protocol TCP
转发协议,分为TCP和UDP两种
2)real_server:真实服务器IP和端口,可以定义多个
第67行:weight 1
负载权重,值越大,转发的优先级越高
第81行:connect_timeout 3
服务连接超时时长,单位:秒
第82行:nb_get_retry 3
服务连接失败重试次数
第83行:delay_before_retry 3 :重试连接间隔,单位:秒
keepalived+nginx配置文件及检查nginx服务的脚本,如果停了,vip漂移到keepalived备机
#1、设置keepalived.conf
vim /etc/keepalived/keepalived.conf
#添加代码
vrrp_script chk_host_service_status {
script "/etc/keepalived/host_service_status.sh" #健康检查web状态的脚本
interval 2 #检测脚本执行的间隔时间
weight 2
}track_script { #调用健康监测模板,一定要放在vip的配置下面
chk_host_service_status
}
#2、编写host_service_status.sh
vim /etc/keepalived/host_service_status.sh
#!/bin/bash
nginx_num=`ps -ef | grep nginx | grep -v grep | wc -l`if [ $nginx_num -lt 2 ]
then
echo "web宕机了"
systemctl stop/restart keepalived #停止主keepalived,让vip漂移到备机上,保证高可用
else
echo "web正常"
fichmod +x host_service_status.sh