内容包括:
- Redis安装脚本:
- installRedis.sh、Redis.conf、Sentinel.conf、VIP绑定脚本
- Nginx安装脚本:
- installNginx.sh、makeNginx.sh、nginx.conf
- RabbitMQ及集群的安装脚本:
- installRabbitMQ.sh 、 installRabbitMQMirrorCluster.sh
- HAProxy安装脚本:
- installHAProxy.sh、haproxy.cfg
- Keepalived安装脚本:
- installKeepalived.sh 、keepalived.conf、 ha_check.sh
- centos7的repo样本、刷新yum源的语句:
安装Redis
cd /tools
scp [email protected]:/tools/redis-5.0.5.tar.gz /tools
tar -zxvf redis-5.0.5.tar.gz -C /usr/local/
cd /usr/local/redis-5.0.5/
make install prefix=/usr/local/bin
mkdir /etc/redis
cp /usr/local/redis-5.0.5/redis.conf /etc/redis/
chmod 777 /etc/redis/redis.conf
sed -i 's/daemonize no/daemonize yes/g' `grep -lr 'daemonize no' /etc/redis/`
cp /usr/local/redis-5.0.5/redis.conf /etc/init.d/redis
chmod +x /etc/init.d/redis
sed -i 's/REDISPORT=6379/REDISPORT=redis/g' /etc/init.d/redis
sed -i 's/bind 127.0.0.1/bind 0.0.0.0/g' /etc/init.d/redis
sed -i 's/# requirepass foobared/requirepass ljfirst/g' /etc/init.d/redis
chkconfig --add redis
systemctl enable redis
systemctl status redis.service
systemctl start redis.service
protected-mode yes
bind 0.0.0.0
port 6379
daemonize yes
pidfile "/var/run/redis_6379.pid"
logfile "/etc/redis/redis.log"
dir "/etc/redis"
dbfilename "dump.rdb"
replica-read-only yes
masterauth "ljfirst"
requirepass "ljfirst"
replicaof 10.xxx.xxx.214 6379 # 从节点才配置这个
port 26379
daemonize yes
protected-mode no
pidfile "/var/run/redis-sentinel.pid"
logfile "/etc/redis/sentinel.log"
dir "/tmp"
sentinel myid 9632dc4e6abd37cfbc1cf347bcf38f3aa81a2450
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster01 10.xxx.xxx.214 6379 2
sentinel down-after-milliseconds mymaster01 5000
sentinel failover-timeout mymaster01 10000
sentinel client-reconfig-script mymaster01 /etc/redis/transip.sh # 启用VIP的语句
sentinel auth-pass mymaster01 Spdb@1234
#!/bin/bash
MASTER_IP=$6
LOCAL_IP='10.xxx.xxx.212'
VIP='10.xxx.xxx.202'
NETMASK='24'
# 此处的网卡用 ifconfig 查看
INTERFACE='eth0'
if [ ${MASTER_IP}=${LOCAL_IP} ]; then
/sbin/ip addr add ${VIP}/${NETMASK} dev ${INTERFACE}
/sbin/arping -q -c 3 -A ${VIP} -I ${INTERFACE}
exit 0
else
/sbin/ip addr del ${VIP}/${NETMASK} dev ${INTERFACE}
exit 0
fi
exit 1
安装NGINX
cd /tools
scp [email protected]:/tools/\{nginx.sh,nginx-1.19.0.tar.gz} /tools
tar -zxvf /tools/nginx-1.19.0.tar.gz -C /usr/local/
yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel
cd /usr/local/nginx-1.19.0
cp /tools/nginx.sh ./
source nginx.sh
make && make install
mkdir -p /var/temp/nginx/client
cd /usr/local/nginx/sbin
./nginx
ps aux |grep nginx
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-file-aio \
--with-http_realip_module
#user nobody;
user root;
worker_processes 1;
error_log /usr/local/nginx/logs/error.log;
pid /usr/local/nginx/logs/nginx.pid;
events {
worker_connections 1024;
}
# 此处是 TCP 的分流写法,与HTTP的好像不能同时存在
stream{
upstream cloudadapt{
server 10.145.33.221:81 weight=1;
server 10.145.33.222:81 weight=1;
}
server {
listen 81;
proxy_timeout 500s;
#server_name localhost;
proxy_pass cloudadapt;
}
}
# 此处是 HTTP 的分流写法
http {
include mime.types;
default_type application/octet-stream;
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
# 此处是Nginx本服务对外暴露的地址
server {
listen 88;
server_name localhost;
location / {
root /usr/local/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# 此处是用于负载均衡的写法
upstream loverlj{
server 10.xx.xx.15:8104 ;
#此处为主备模式
server 10.xx.xx.16:8104 backup;
}
server {
listen 1104;
server_name localhost;
location / {
proxy_pass http://loverlj;
root /usr/local/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
安装RabbitMQ
cd /tools
scp [email protected]:/tools/\{rabbitmq-server-3.7.17-1.el7.noarch.rpm,socat-1.7.3.2-2.el7.x86_64.rpm,erlang-22.0.7-1.el7.x86_64.rpm} /tools
rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm
yum -y install socat
rpm -ivh rabbitmq-server-3.7.17-1.el7.noarch.rpm
service rabbitmq-server start
chkconfig rabbitmq-server on
cd /usr/lib/rabbitmq/bin
rabbitmqctl add_user sa Spdb@1234
rabbitmqctl set_user_tags sa administrator
rabbitmqctl set_permissions -p / sa ".*" ".*" ".*"
rabbitmq-plugins enable rabbitmq_management
- installRabbitMQMirrorCluster.sh
echo "please handle"
read
ipmaster=10.12
ip1=10.12
ip2=10.12
scp /var/lib/rabbitmq/.erlang.cookie root@$ip1:/root/
scp /var/lib/rabbitmq/.erlang.cookie root@$ip2:/root/
rabbitmq-server --detached
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbitmq@HA
rabbitmqctl cluster_status
echo $ipmaster kf06mq01 >> /etc/hosts
echo $ip1 kf06mq2 >> /etc/hosts
echo $ip2 kf06mq03 >> /etc/hosts
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
安装HAProxy
scp [email protected]:/tools/\{haproxy.cfg,haproxy-2.1.0.tar.gz,ha_check.py} /tools
tar -zxvf haproxy-2.1.0.tar.gz -C /usr/local/
cd /usr/local/haproxy-2.1.0
make TARGET=linux31
make install PREFIX=/usr/local/haproxy
cp /tools/haproxy.cfg /usr/local/haproxy/conf
cp /usr/local/haproxy/sbin/haproxy /etc/init.d/
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
####################HAProxy配置中分成五部分内容,当然这些组件不是必选的,可以根据需要选择部分作为配置。
#global :参数是进程级的,通常和操作系统(OS)相关。这些参数一般只设置一次,如果配置无误,就不需要再次配置进行修改
#defaults:配置默认参数的,这些参数可以被利用配置到frontend,backend,listen组件
#frontend:接收请求的前端虚拟节点,Frontend可以根据规则直接指定具体使用后端的 backend(可动态选择)。
#backend :后端服务集群的配置,是真实的服务器,一个Backend对应一个或者多个实体服务器。
#listen :Frontend和Backend的组合体。
global
log 127.0.0.1 local0
maxconn 20000
chroot /usr/local/haproxy-2.1.0
uid 200
gid 200
daemon
pidfile /usr/local/haproxy-2.1.0/haproxy.pid
ulimit-n 40020
nbproc 1
defaults
log global
mode tcp
option tcplog
option dontlognull
retries 3
timeout connect 5000
timeout client 50000
timeout server 50000
# errorfile 400 /etc/haproxy/errors/400.http
# errorfile 403 /etc/haproxy/errors/403.http
# errorfile 408 /etc/haproxy/errors/408.http
# errorfile 500 /etc/haproxy/errors/500.http
# errorfile 502 /etc/haproxy/errors/502.http
# errorfile 503 /etc/haproxy/errors/503.http
# errorfile 504 /etc/haproxy/errors/504.http
listen middlesoft
bind *:5673
balance roundrobin
mode tcp
option tcplog
option tcpka
#bind-process 2
timeout client 15s
timeout connect 3s
timeout server 15s
server HARabbitmq1 10.129.0.162:5672 check inter 5000 rise 2 fall 3
server HARabbitmq2 10.129.0.163:5672 check inter 5000 rise 2 fall 3
server HARabbitmq3 10.129.0.164:5672 check inter 5000 rise 2 fall 3
# weight - 调节服务器的负重
# check - 允许对该服务器进行健康检查
# inter - 设置连续的两次健康检查之间的时间,单位为毫秒(ms),默认值 2000(ms)
# rise - 指定多少次连续成功的健康检查后,可认定该服务器处于可操作状态,默认值 2
# fall - 指定多少次不成功的健康检查后,认为服务器为当掉状态,默认值 3
# maxconn - 指定可被发送到该服务器的最大并发连接数
listen rabbitmqbrower
bind *:15673
balance roundrobin
server HARabbitmq1 10.129.0.162:15672 check inter 5000 rise 2 fall 3
server HARabbitmq2 10.129.0.163:15672 check inter 5000 rise 2 fall 3
server HARabbitmq3 10.129.0.164:15672 check inter 5000 rise 2 fall 3
# 配置haproxy web监控,查看统计信息
listen monitoring
bind 0.0.0.0:8100
mode http
option httplog
stats enable
#设置haproxy监控地址为http://localhost:8100/stats
stats uri /stats
stats refresh 5s
安装 Keepalived
scp [email protected]:/tools/\{keepalived.conf,keepalived-2.0.20.tar.gz} /tools
tar -zxvf keepalived-2.0.20.tar.gz -C /usr/local/
cd /usr/local/keepalived-2.0.20
yum -y install openssl-devel
./configure --prefix=/usr/local/keepalived
make && make install
mkdir /etc/keepalived
cp /tools/keepalived.conf /etc/keepalived/
chmod 664 /etc/keepalived/keepalived.conf
cp /usr/local/keepalived-2.0.20/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
chmod +x /etc/init.d/keepalived
chkconfig --add keepalived
systemctl enable keepalived.service
systemctl start keepalived.service
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id HARabbitmq3
#vrrp_mcast_group4 224.26.1.1
}
#此处需要保证“chk_haproxy”和“{”之间有空格,实在不行就换行,可以解决一些奇怪的问题
vrrp_script chk_haproxy {
script "/tools/ha_check.sh"
interval 1 #定时1秒执行一次检查
weight -2
timeout 30
}
vrrp_instance haproxy {
state BACKUP
interface eth0
virtual_router_id 108
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1234
}
track_script {
chk_haproxy
}
virtual_ipaddress {
10.129.0.180
}
}
- ha_check.sh
- 用脚本的时候,source 一下,确保脚本是正确可以执行的,另外${ps -C haproxy --no-header |wc -l} 如果执行不了,试着把{}换成 : ``
- 需要多测试几次这个脚本,特别是sleep语句的位置,是在if内外?
- 给ha_check.sh脚本加777权限:chmod 777 ha_check.sh
#!/bin/bash
if [ ${ps -C haproxy --no-header |wc -l} -eq 0 ]; then
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
sleep 3
# echo aaaa
fi
if [ ${ps -C haproxy --no-header |wc -l} -eq 0 ]; then
systemctl stop keepalived
# echo bbbb
fi
centos7的repo样本、刷新yum源的语句
[base7_7]
name=CentOS-7Server - Base
baseurl=http://10.129.9.217/repo/20200701/centos7_7/base7_7
enabled=1
gpgcheck=0
[updates7_7]
name=CentOS-7Server - Updates
baseurl=http://10.129.9.217/repo/20200701/centos7_7/updates7_7
enabled=1
gpgcheck=0
[extras7_7]
name=CentOS-7Server - Extras
baseurl=http://10.129.9.217/repo/20200701/centos7_7/extras7_7
enabled=1
gpgcheck=0
scp [email protected]:/tools/\{centos7.repo,installHAProxy.sh,installkeepalived.sh,installNginx.sh,installRabbitMQMirrorCluster.sh,installRabbitMQ.sh,installRedis.sh} /etc/yum.repos.d/
chmod 777 /etc/yum.repos.d/centos7.repo
yum repolist all
yum clean all
yum makecache
yum install -y gcc-c++ tcl