LVS+Keepalived+Ngingx+Tomcat+Mariadb+Nfs

LVS+Keepalived+Ngingx+Tomcat+Mariadb+Nfs

1.首先安装LVS+keepalived,这里用yum安装即可

LVS+KEEPAIVED

IP规划

KEEPAIVED 主为MASTER

10.0.0.40

KEEPAIVED 备用BACKUP

10.0.0.41

VIP地址

10.0.0.42

NFS

10.0.0.43

WEB-1

nginx-1

10.0.0.45

WEB-2

nginx-2

10.0.0.46

Tomcat-1

10.0.0.50

Tomcat-2

10.0.0.51

Mariadb-1

10.0.0.55

Mariadb-2

10.0.0.56

安装

yum install ipvsadm keepalived -y

备份一下源配置文件:

cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak -a

keepalived

vim /etc/keepalived/keepalived.conf

改成一下内容

! Configuration File for keepalived

global_defs {

router_id Director1

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

10.0.0.42/24 dev eth0

}

}

virtual_server 10.0.0.42 80 {

delay_loop 3

lb_algo rr

lb_kind DR

protocol TCP

real_server 10.0.0.45 80 {

weight 1

TCP_CHECK {

connect_timeput 3

}

}

real_server 10.0.0.46 80 {

weight 1

TCP_CHECK {

connect_timeput 3

}

}

}

备用

vim /etc/keepalived/keepalived.conf

改成一下内容

! Configuration File for keepalived


            global_defs {

            router_id Director2

            }


            vrrp_instance VI_1 {

            state BACKUP

            interface eth0

            virtual_router_id 51

            priority 80

            advert_int 1

            authentication {

            auth_type PASS

            auth_pass 1111

            }

            virtual_ipaddress {

            10.0.0.42/24 dev eth0

            }

            }


            virtual_server 10.0.0.42 80 {

            delay_loop 3

            lb_algo rr

            lb_kind DR

            protocol TCP


            real_server 10.0.0.45 80 {

            weight 1

            TCP_CHECK {

            connect_timeput 3

            }

            }

            real_server 10.0.0.46 80 {

            weight 1

            TCP_CHECK {

            connect_timeput 3

            }

            }

            }

解释:

! Configuration File for keepalived


            global_defs {

            router_id Director1 #两边的ID不一样

            }


            vrrp_instance VI_1 {

            state MASTER #主为MASTER 备用的为BACKUP

            interface eth0                  #心跳网卡设备名称

            virtual_router_id 51            #虚拟路由编号,主备要一致

            priority 100                    #优先级1-255,数字越大优先级越高

            advert_int 1                    #检测间隔,单位秒

            authentication {                #

            auth_type PASS              #

            auth_pass 1111              #

            }                              #

            virtual_ipaddress {            #虚拟VIP地址

            10.0.0.42/24 dev eth0    #VIP地址和工作端口和设备名称

            } #

            }                                  #

#

            virtual_server 10.0.0.42 80 {    #LVS的虚拟IP地址和端口

            delay_loop 3                    #服务轮询的时间间隔

            lb_algo rr                      #LVS调度算法

            lb_kind DR                      #LVS集群模式

            protocol TCP                    #

#

            real_server 10.0.0.45 80 {  #后端web服务器IP和端口

            weight 1                    #主机权重为1

            TCP_CHECK {                #TCP链接校验

            connect_timeput 3  #链接超时时间为3,如果超过3秒连不上,服务端就会认为这台服务器挡掉了,就会把这台机器踢出去

            }                          #

            }                              #

            real_server 10.0.0.46 80 {

            weight 1

            TCP_CHECK {

            connect_timeput 3

            }

            }

            }

不需要启动LVS,只启动keepalived即可!!

不需要启动LVS,只启动keepalived即可!!

主节点启动

启动keepalived

systemctl start keepalived

开机自启动

systemctl enable keepalived

备用节点启动

启动keepalived

systemctl start keepalived

开机自启动

        systemctl enable keepalived

web-1安装nginx

10.0.0.45

脚本安装

vim  nginx.sh

输入以下内容

#!/bin/bash

#install nginx

yum install wget gcc pcre pcre-devel openssl-devel openssl gzip make cmake zlib-devel tar lrzsz -y

cd

wget http://nginx.org/download/nginx-1.18.0.tar.gz

useradd -s /sbin/nologin  -M nginx

tar zxvf nginx-1.18.0.tar.gz

cd nginx-1.18.0/

./configure  --prefix=/usr/local/nginx/ --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_mp4_module

make

make install

mkdir -p /usr/local/nginx/conf.d/

echo "

[Unit]

Description=nginx service

After=network.target

[Service]

Type=forking

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/usr/local/nginx/sbin/nginx -s reload

ExecStop=/usr/local/nginx/sbin/nginx -s quit

PrivateTmp=true

[Install]

WantedBy=multi-user.target

">/lib/systemd/system/nginx.service

systemctl daemon-reload

systemctl start nginx.service

systemctl enable nginx.service

再来执行脚本

sh nginx.sh

添加测试页面

echo Nginx-1 > /usr/local/nginx/html/index.html

测试访问

[root@nginx-1 ~]# curl 127.0.0.1

Nginx-1

添加虚拟网卡,并编写虚拟网卡配置文件

cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:0 -a

修改虚拟网卡配置文件

vim /etc/sysconfig/network-scripts/ifcfg-lo:0

改成以下内容

DEVICE=lo:0

IPADDR=10.0.0.42

NETMASK=255.255.255.255

ONBOOT=yes

解释:

DEVICE=lo:0 #设备名称lo:0

IPADDR=10.0.0.42        #VIP地址也是就是keepalived里面写的VIP地址

NETMASK=255.255.255.255    #子网掩码32位,不要写成24位

ONBOOT=yes                  #开机启动此设备

添加路由规则,这样开机就可以自动添加了

echo /sbin/route add host 10.0.0.42 dev lo:0 >> /etc/rc.local

添加权限

chmod +x /etc/rc.local

配置ARP,防止这个设备在局域网内广播,在最后一行添加

vim /etc/sysctl.conf

在最后一行添加以下内容

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.default.arp_ignore = 1

net.ipv4.conf.default.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

重启让配置生效

reboot

web-2

编译安装nginx,执行以上nginx的脚本即可

安装好以后再来添加测试页面

echo Nginx-2 > /usr/local/nginx/html/index.html

测试访问

[root@nginx-2 ~]# curl 127.0.0.1

Nginx-2

添加虚拟网卡,并编写虚拟网卡配置文件

cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:0 -a

修改虚拟网卡配置文件

vim /etc/sysconfig/network-scripts/ifcfg-lo:0

改成以下内容

DEVICE=lo:0

IPADDR=10.0.0.42

NETMASK=255.255.255.255

ONBOOT=yes

解释:

        DEVICE=lo:0 #设备名称lo:0

        IPADDR=10.0.0.42        #VIP地址也是就是keepalived里面写的VIP地址

        NETMASK=255.255.255.255    #子网掩码32位,不要写成24位

        ONBOOT=yes                  #开机启动此设备


        添加路由规则,这样开机就可以自动添加了

        echo /sbin/route add host 10.0.0.42 dev lo:0 >> /etc/rc.local


        添加权限

        chmod +x /etc/rc.local



        配置ARP,防止这个设备在局域网内广播,在最后一行添加

        vim /etc/sysctl.conf

        在最后一行添加以下内容


        net.ipv4.conf.all.arp_ignore = 1

        net.ipv4.conf.all.arp_announce = 2

        net.ipv4.conf.default.arp_ignore = 1

        net.ipv4.conf.default.arp_announce = 2

        net.ipv4.conf.lo.arp_ignore = 1

        net.ipv4.conf.lo.arp_announce = 2


        重启让配置生效

        reboot

MASTER上查询LVS

ipvsadm -Ln

返回结果:

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port          Forward Weight ActiveConn InActConn

TCP  10.0.0.42:80 rr

-> 10.0.0.45:80              Route  1      0          0       

-> 10.0.0.46:80              Route  1      0          0       

这样LVS调度就完成,可以用浏览器访问vip地址 10.0.0.42

10.0.0.42

修改nginx主配置,两台nginx修改成同样的配置即可

vim /usr/local/nginx/conf/nginx.conf

worker_processes  1;

events {

worker_connections  1024;

}

http {

include      mime.types;

default_type  application/octet-stream;

sendfile        on;

keepalive_timeout  65;

upstream tomcat {

server 10.0.0.50:8080 weight=100 max_fails=2 fail_timeout=15;

server 10.0.0.51:8080 weight=100 max_fails=2 fail_timeout=15;

#      server 10.0.0.10:8080 weight=100 max_fails=2 fail_timeout=15;

#      server 10.0.0.11:8080 weight=100 max_fails=2 fail_timeout=15;

}

server {

listen      80;

server_name  localhost;

location / {

proxy_pass http://tomcat;

proxy_set_header host $host;

root  html/;

index  index.jsp index.html index.htm;

}

# location ~ .*\.(htm|html|txt|js|css|png|jpg|gif|jpeg|doc|xml)$

# {

#    root  /data/webapps/;

#    expires 30d;

# }

}

}

删除默认测试页面

rm -rf /usr/local/nginx/html/index.html

重新加载nginx配置文件,两台nginx修改好以后都要执行

systemctl reload nginx

10.0.0.50和10.0.0.51安装tomcat

先在服务器上传jdk的包和tomcat的包

apache-tomcat-8.5.50.tar.gz 

jdk-8u231-linux-x64.tar.gz

脚本安装

vim install_tomcat.sh

写入以下内容

#!/bin/bash

. /etc/init.d/functions

DIR=`pwd`

JDK_FILE="jdk-8u231-linux-x64.tar.gz"

TOMCAT_FILE="apache-tomcat-8.5.50.tar.gz"

JDK_DIR="/usr/local"

TOMCAT_DIR="/usr/local"

install_jdk(){

if !  [  -f "$DIR/$JDK_FILE" ];then

action "$JDK_FILE 文件不存在" false

exit;

elif [ -d $JDK_DIR/jdk ];then

action "JDK 已经安装" false

exit

else

[ -d "$JDK_DIR" ] || mkdir -pv $JDK_DIR

fi

tar xvf $DIR/$JDK_FILE  -C $JDK_DIR

cd  $JDK_DIR && ln -s jdk1.8.* jdk

cat >  /etc/profile.d/jdk.sh <

export JAVA_HOME=$JDK_DIR/jdk

export JRE_HOME=\$JAVA_HOME/jre

export CLASSPATH=\$JAVA_HOME/lib/:\$JRE_HOME/lib/

export PATH=\$PATH:\$JAVA_HOME/bin

EOF

.  /etc/profile.d/jdk.sh

java -version && action "JDK 安装完成" || { action "JDK 安装失败" false ; exit; }

}

install_tomcat(){

if ! [ -f "$DIR/$TOMCAT_FILE" ];then

action "$TOMCAT_FILE 文件不存在" false

exit;

elif [ -d $TOMCAT_DIR/tomcat ];then

action "TOMCAT 已经安装" false

exit

else

[ -d "$TOMCAT_DIR" ] || mkdir -pv $TOMCAT_DIR

fi

tar xf $DIR/$TOMCAT_FILE -C $TOMCAT_DIR

cd  $TOMCAT_DIR && ln -s apache-tomcat-*/  tomcat

echo "PATH=$TOMCAT_DIR/tomcat/bin:"'$PATH' > /etc/profile.d/tomcat.sh

id tomcat &> /dev/null || useradd -r -s /sbin/nologin tomcat

cat > $TOMCAT_DIR/tomcat/conf/tomcat.conf <

JAVA_HOME=$JDK_DIR/jdk

JRE_HOME=\$JAVA_HOME/jre

EOF

chown -R tomcat.tomcat $TOMCAT_DIR/tomcat/

cat > /lib/systemd/system/tomcat.service  <

[Unit]

Description=Tomcat

#After=syslog.target network.target remote-fs.target nss-lookup.target

After=syslog.target network.target

[Service]

Type=forking

EnvironmentFile=$TOMCAT_DIR/tomcat/conf/tomcat.conf

ExecStart=$TOMCAT_DIR/tomcat/bin/startup.sh

ExecStop=$TOMCAT_DIR/tomcat/bin/shutdown.sh

PrivateTmp=true

User=tomcat

[Install]

WantedBy=multi-user.target

EOF

systemctl daemon-reload

systemctl enable --now tomcat.service

systemctl is-active tomcat.service &> /dev/null &&  action "TOMCAT 安装完成" || { action "TOMCAT 安装失败" false ; exit; }

}

install_jdk

install_tomcat

修改好以后保存退出

执行脚本

sh install_tomcat.sh

安装好以后查看tomcat的ID

#id tomcat

返回结果,你的ID不一定和我的一样

uid=995(tomcat) gid=995(tomcat) groups=995(tomcat)

下载zrlog的war包

官方地址

https://www.zrlog.com/

把下载的好war包,复制到/usr/local/tomcat/webapps/并重命名为ROOT.war

cp zrlog-2.2.0-5e8a51f-release.war /usr/local/tomcat/webapps/ROOT.war

给这个目录tomcat的属主属组的权限

chown -R tomcat. /usr/local/tomcat/webapps/ROOT/

安装Maridb,两台10.0.0.55和10.0.0.56都安装

链接:

http://www.9527edu.org/post/45.html

安装好Maridb以后,两台10.0.0.55和10.0.0.56,设置为主从

vim /etc/my.cnf

Mariadb里面有单独的log-bin=mysql-bin和server-id=1,只需要单独的修改即可,无需添加进去

log-bin=mysql-bin

server-id=1

链接:

http://www.9527edu.org/post/115.html

10.0.0.55为主

10.0.0.56为从

进入主数据库创建zrlog的数据库并授权

进入数据库

mysql -uroot -p密码

创建

create database zrlogdb character set utf8 collate utf8_bin;

授权

grant all on zrlogdb.* to 'zrlogdb'@'%' identified by '123456';

用浏览器访问10.0.0.50:8080

http://10.0.0.50:8080

完成安装

写入信息

数据库服务器

10.0.0.55

数据库名

zrlogdb

数据库用户名

zrlogdb

数据库密码

123456

数据库端口

3306

点击下一步

根据自己的喜好填写

安装好以后,把/usr/local/tomcat/webapps/ROOT这个目录拷贝到/tmp下

cp /usr/local/tomcat/webapps/ROOT  /tmp/ -ra

打包/tmp/ROOT目录

进入/tmp下

cd /tmp

打包到/root目录

tar -cvf /root/zrlog.tar.gz ROOT

再通过scp把这个目录拷贝到NFS服务器上

scp /root/zrlog.tar.gz [email protected]:/root/

安装NFS,10.0.0.43

首先创建一个tomcat用户uid和gid都是995

创建tomcat组,gid为995

groupadd tomcat -g 995

创建tomcat用户,并指定gid995和uid995

useradd tomcat -s /sbin/nologin -M -u 995 -g 995

安装nfs

yum install nfs-utils -y

创建NFS共享文件夹

mkdir -p /zrlog

修改配置文件

vim /etc/exports

修改如下

/zrlog 10.0.0.0/24(rw,sync,all_squash,anonuid=995,anongid=995)

解压zrlog.tar.gz

tar -xf zrlog.tar.gz -C /zrlog

####给tomcat属主属组权限

这条命令可以不用操作,默认是有权限的,如果输入了,可能需要重新解压包才能使用

chown -R tomcat. /zrlog

开机启动nfs

systemctl enable nfs-server

修改好配置文件以后重启nfs

systemctl restart nfs-server

10.0.0.50和10.0.0.51修改一下/etc/fstab,这样开机自动挂载nfs了

先安装nfs

yum install nfs-utils -y

修改配置文件

vim /etc/fstab

添加一下内容,在最后一行添加

10.0.0.43:/zrlog /usr/local/tomcat/webapps/ nfs defaults 0 0

wq保存退出

挂载

mount -a

你可能感兴趣的:(LVS+Keepalived+Ngingx+Tomcat+Mariadb+Nfs)