• 马哥博客作业第二十一周


    1、搭建一个 redis 哨兵集群

    一主二从三哨兵模式
    master(10.0.0.105),slave1(10.0.0.106),slave2(10.0.0.107)
    都执行以下脚本安装redis服务
    bash install_redis.sh #
    !/bin/bash . /etc/init.d/functions SRC_DIR=/usr/local/src REDIS='redis-5.0.9.tar.gz' VERSION=`echo $REDIS | sed -nr 's/^(.*).tar.*/1/p'` INSTALL_DIR=/apps/redis PASSWORD=123456 COLOR='echo -e E[01;31m' END='E[0m' ##检查 check(){ ##检查用户是否root if [ $UID -ne 0 ] ;then action "当前用户不是root,安装失败" false exit 1 fi cd $SRC_DIR ##检查nginx安装包是否存在 if [ ! -e $REDIS ] ;then $COLOR"缺少${REDIS}文件"$END $COLOR"请将相关文件放在${SRC_DIR}目录下"$END exit ##检查mysql是否已安装 elif [ -e ${INSTALL_DIR} ] ;then action "REDIS已存在,安装失败 " false exit else action "环境检测正常" return fi } ##安装redis install_redis(){ ##安装依赖包 yum install gcc jemalloc-devel -y > /dev/null [ $? -eq 0 ] && { action "依赖包安装" ;} || { action "依赖包安装" false ;exit ; } ##创建redis用户 id redis && action "创建Redis用户" || { useradd -r -s /sbin/nologin redis ; action "创建redis用户"; } ##创建apps文件夹 [ -d /apps ] || { mkdir /apps ; action "创建apps文件夹"; } cd $SRC_DIR tar xf $REDIS cd $VERSION make PREFIX=${INSTALL_DIR} install > /dev/null [ $? -eq 0 ] && action "make install " || { action "make install " false ; exit ;} mkdir ${INSTALL_DIR}/{etc,data,run,log} cp redis.conf ${INSTALL_DIR}/etc/ sed -ri 's/bind 127.0.0.1$/bind 0.0.0.0/' ${INSTALL_DIR}/etc/redis.conf sed -ri "/# requirepass .*/a requirepass ${PASSWORD}" ${INSTALL_DIR}/etc/redis.conf sed -ri "/^dir .*/c dir ${INSTALL_DIR}/data/" ${INSTALL_DIR}/etc/redis.conf sed -ri "/logfile .*/c logfile ${INSTALL_DIR}/log/redis_6379.log" ${INSTALL_DIR}/etc/redis.conf sed -ri "/daemonize .*/c daemonize yes" ${INSTALL_DIR}/etc/redis.conf sed -ri "/pidfile .*/c pidfile ${INSTALL_DIR}/run/redis_6379.pid" ${INSTALL_DIR}/etc/redis.conf echo "PATH=${INSTALL_DIR}/bin:$PATH" > /etc/profile.d/redis.sh . /etc/profile.d/redis.sh cat > /usr/lib/systemd/system/redis.service <<-EOF [Unit] Description=Redis persistent key-value database After=network.target [Service] ExecStart=${INSTALL_DIR}/bin/redis-server ${INSTALL_DIR}/etc/redis.conf --supervised systemd ExecStop=/bin/kill -s QUIT $MAINPID Type=notify User=redis Group=redis RuntimeDirectory=redis RuntimeDirectoryMode=0755 [Install] WantedBy=multi-user.target EOF cat >> /etc/sysctl.conf<<-EOF net.core.somaxconn = 1024 vm.overcommit_memory = 1 EOF sysctl -p echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.d/rc.local chmod +x /etc/rc.d/rc.local /etc/rc.d/rc.local chown -R redis.redis ${INSTALL_DIR} systemctl daemon-reload systemctl enable redis.service systemctl start redis.service [ $? -eq 0 ] && action "Redis 启动" || { action "Redis 启动" false ;exit ;} [ $? -eq 0 ] && $COLOR"Redis安装成功"$END } check install_redis
    安装完redis服务后修改配置文件,配置一主二从
    
    master(10.0.0.105)修改以下配置,重启服务
    
    vim /apps/redis/etc/redis.conf 
    
    masterauth 123456
    
    systemctl restart redis.service
    
    slave1(10.0.0.106),slave2(10.0.0.107)修改以下配置,重启服务
    
    vim /apps/redis/etc/redis.conf 
    
    replicaof 10.0.0.105 6379
    masterauth 123456
    
    systemctl restart redis.service
    主从配置成功
    
    [root@centos7 ~]#redis-cli -a 123456 -h 10.0.0.105 info replication
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=10.0.0.106,port=6379,state=online,offset=3356,lag=0
    slave1:ip=10.0.0.107,port=6379,state=online,offset=3221,lag=1
    master_replid:121e97e5aa570877d224e9a538c04e4c9a3302c7
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:3356
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:3356
    [root@centos7 ~]#redis-cli -a 123456 -h 10.0.0.106 info replication
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    # Replication
    role:slave
    master_host:10.0.0.105
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:2
    master_sync_in_progress:0
    slave_repl_offset:30511
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:121e97e5aa570877d224e9a538c04e4c9a3302c7
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:30511
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:30511
    [root@centos7 ~]#redis-cli -a 123456 -h 10.0.0.107 info replication
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    # Replication
    role:slave
    master_host:10.0.0.105
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:1
    master_sync_in_progress:0
    slave_repl_offset:30781
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:121e97e5aa570877d224e9a538c04e4c9a3302c7
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:30781
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:3064
    repl_backlog_histlen:27718

    部署哨兵集群

    master(10.0.0.105),slave1(10.0.0.106),slave2(10.0.0.107)
    
    都执行以下脚本命令
    
    #!/bin/bash
    ##AUTO huangguangrui
    MASTER="10.0.0.105"
    PASSWD="123456"
    PORT="6379"
    
    install_sentinel(){
    
    cp /usr/local/src/redis-*/sentinel.conf /apps/redis/etc/
    
    
    sed -ri "/^pidfile.*/c pidfile /apps/redis/run/redis-sentinel.pid" /apps/redis/etc/sentinel.conf 
    sed -ri "/^logfile.*/c logfile "/apps/redis/log/sentinel.log"" /apps/redis/etc/sentinel.conf
    sed -ri '/^dir.*/c dir "/apps/redis/data"' /apps/redis/etc/sentinel.conf
    sed -ri "/^sentinel monitor mymaster.*/c sentinel monitor mymaster $MASTER $PORT 2" /apps/redis/etc/sentinel.conf
    sed -ri "/^# sentinel auth-pass mymaster.*/c sentinel auth-pass mymaster $PASSWD" /apps/redis/etc/sentinel.conf
    sed -ri '/^sentinel down-after-milliseconds.*/c sentinel down-after-milliseconds mymaster 3000' /apps/redis/etc/sentinel.conf
    
    
    cat > /usr/lib/systemd/system/redis-sentinel.service <<-EOF
    [Unit]
    Description=Redis Sentinel
    After=network.target
    After=network-online.target
    Wants=network-online.target
    
    [Service]
    ExecStart=/apps/redis/bin/redis-sentinel /apps/redis/etc/sentinel.conf --supervised systemd                                                        
    #ExecStop=/usr/libexec/redis-shutdown redis-sentinel
    ExecStop=/bin/kill -s  QUIT $MAINPID
    Type=notify
    User=redis
    Group=redis
    RuntimeDirectory=redis
    RuntimeDirectoryMode=0755
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    chown -R redis.redis /apps/redis/
    systemctl enable --now redis-sentinel.service
    }
    
    install_sentinel

    查看日志

    [root@centos7 ~]#tail -f /apps/redis/log/sentinel.log 
    5931:X 26 Oct 2020 18:46:14.377 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
    5931:X 26 Oct 2020 18:46:14.377 # Redis version=5.0.9, bits=64, commit=00000000, modified=0, pid=5931, just started
    5931:X 26 Oct 2020 18:46:14.377 # Configuration loaded
    5931:X 26 Oct 2020 18:46:14.377 * supervised by systemd, will signal readiness
    5931:X 26 Oct 2020 18:46:14.378 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
    5931:X 26 Oct 2020 18:46:14.378 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted.
    5931:X 26 Oct 2020 18:46:14.378 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
    5931:X 26 Oct 2020 18:46:14.378 * Running mode=sentinel, port=26379.
    5931:X 26 Oct 2020 18:46:14.379 # Sentinel ID is 8a34136c61f51740d8a201923a5e78648e2bbe1e
    5931:X 26 Oct 2020 18:46:14.382 # +monitor master mymaster 10.0.0.105 6379 quorum 2
    5931:X 26 Oct 2020 18:54:46.517 * +reboot master mymaster 10.0.0.105 6379
    5931:X 26 Oct 2020 18:54:56.578 * +slave slave 10.0.0.106:6379 10.0.0.106 6379 @ mymaster 10.0.0.105 6379
    5931:X 26 Oct 2020 18:55:36.747 * +slave slave 10.0.0.107:6379 10.0.0.107 6379 @ mymaster 10.0.0.105 6379

      5931:X 26 Oct 2020 19:21:19.737 * +sentinel sentinel dd06d2d40766647aeaada6535c5e07ebd2dfea94 10.0.0.106 26379 @ mymaster 10.0.0.105 6379
      5931:X 26 Oct 2020 19:21:44.872 * +sentinel sentinel b6163adab7a58d19aa5f2f14f36cb73db2eb46f8 10.0.0.107 26379 @ mymaster 10.0.0.105 6379

     

    redis哨兵模式sentinel部署成功。

    模拟故障:master(10.0.0.105)down机了。
    
    master:
    [root@centos7 ~]#systemctl stop redis
    几秒后启动
    [root@centos7 ~]#systemctl start redis
    
    查看日志:已自动转换slave2(10.0.0.107)为master,原master(10.0.0.105)自动转换为slave
    
    6552:X 26 Oct 2020 19:23:19.472 # +sdown master mymaster 10.0.0.105 6379
    6552:X 26 Oct 2020 19:23:19.550 # +odown master mymaster 10.0.0.105 6379 #quorum 2/2
    6552:X 26 Oct 2020 19:23:19.551 # +new-epoch 1
    6552:X 26 Oct 2020 19:23:19.551 # +try-failover master mymaster 10.0.0.105 6379
    6552:X 26 Oct 2020 19:23:19.554 # +vote-for-leader dd06d2d40766647aeaada6535c5e07ebd2dfea94 1
    6552:X 26 Oct 2020 19:23:19.578 # 8a34136c61f51740d8a201923a5e78648e2bbe1e voted for dd06d2d40766647aeaada6535c5e07ebd2dfea94 1
    6552:X 26 Oct 2020 19:23:19.599 # b6163adab7a58d19aa5f2f14f36cb73db2eb46f8 voted for dd06d2d40766647aeaada6535c5e07ebd2dfea94 1
    6552:X 26 Oct 2020 19:23:19.617 # +elected-leader master mymaster 10.0.0.105 6379
    6552:X 26 Oct 2020 19:23:19.617 # +failover-state-select-slave master mymaster 10.0.0.105 6379
    6552:X 26 Oct 2020 19:23:19.673 # +selected-slave slave 10.0.0.107:6379 10.0.0.107 6379 @ mymaster 10.0.0.105 6379
    6552:X 26 Oct 2020 19:23:19.673 * +failover-state-send-slaveof-noone slave 10.0.0.107:6379 10.0.0.107 6379 @ mymaster 10.0.0.105 6379
    6552:X 26 Oct 2020 19:23:19.729 * +failover-state-wait-promotion slave 10.0.0.107:6379 10.0.0.107 6379 @ mymaster 10.0.0.105 6379
    6552:X 26 Oct 2020 19:23:20.586 # +promoted-slave slave 10.0.0.107:6379 10.0.0.107 6379 @ mymaster 10.0.0.105 6379
    6552:X 26 Oct 2020 19:23:20.586 # +failover-state-reconf-slaves master mymaster 10.0.0.105 6379
    6552:X 26 Oct 2020 19:23:20.635 * +slave-reconf-sent slave 10.0.0.106:6379 10.0.0.106 6379 @ mymaster 10.0.0.105 6379
    6552:X 26 Oct 2020 19:23:21.636 * +slave-reconf-inprog slave 10.0.0.106:6379 10.0.0.106 6379 @ mymaster 10.0.0.105 6379
    6552:X 26 Oct 2020 19:23:21.818 # -odown master mymaster 10.0.0.105 6379
    6552:X 26 Oct 2020 19:23:22.659 * +slave-reconf-done slave 10.0.0.106:6379 10.0.0.106 6379 @ mymaster 10.0.0.105 6379
    6552:X 26 Oct 2020 19:23:22.759 # +failover-end master mymaster 10.0.0.105 6379
    6552:X 26 Oct 2020 19:23:22.760 # +switch-master mymaster 10.0.0.105 6379 10.0.0.107 6379
    6552:X 26 Oct 2020 19:23:22.762 * +slave slave 10.0.0.106:6379 10.0.0.106 6379 @ mymaster 10.0.0.107 6379
    6552:X 26 Oct 2020 19:23:22.763 * +slave slave 10.0.0.105:6379 10.0.0.105 6379 @ mymaster 10.0.0.107 6379
    6552:X 26 Oct 2020 19:23:25.859 # +sdown slave 10.0.0.105:6379 10.0.0.105 6379 @ mymaster 10.0.0.107 6379
    6552:X 26 Oct 2020 19:24:13.665 # -sdown slave 10.0.0.105:6379 10.0.0.105 6379 @ mymaster 10.0.0.107 6379
    5906:X 26 Oct 2020 19:24:23.585 * +convert-to-slave slave 10.0.0.105:6379 10.0.0.105 6379 @ mymaster 10.0.0.107 6379
    [root@centos7 ~]#redis-cli -a 123456 -h 10.0.0.107 info replication
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=10.0.0.106,port=6379,state=online,offset=186051,lag=1
    slave1:ip=10.0.0.105,port=6379,state=online,offset=186051,lag=1
    master_replid:7cfd0019a61ee0c158a97ed0356d7abffcc1beef
    master_replid2:f083f61c7917ecf3d22b5fe24c6b01d9e1d049c5
    master_repl_offset:186321
    second_repl_offset:21643
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:186321

    2、实现 redis cluster 得部署

    老规矩先部署redis服务(所有服务器都操作)
    bash install_redis.sh
    修改redis.conf文件启动cluster(所有服务器都操作)
    sed -i.bak -e '/^# masterauth.*/c masterauth 123456' -e '/# cluster-enabled yes/c cluster-enabled yes' -e '/# cluster-enable yes/a cluster-enable yes' -e '/# cluster-config-file nodes-6379.conf/a cluster-config-file nodes-6379.conf' -e '/cluster-require-full-coverage yes/c cluster-require-full-coverage no' /apps/redis/etc/redis.conf
    
    [root@centos7 ~]#systemctl restart redis
    [root@centos7 ~]#ss -ntl
    State       Recv-Q Send-Q                            Local Address:Port                                           Peer Address:Port              
    LISTEN      0      100                                   127.0.0.1:25                                                        *:*                  
    LISTEN      0      511                                           *:16379                                                     *:*                  
    LISTEN      0      511                                           *:6379                                                      *:*                  
    LISTEN      0      128                                           *:22                                                        *:*                  
    LISTEN      0      100                                       [::1]:25                                                     [::]:*                  
    LISTEN      0      128                                        [::]:22                                                     [::]:*    
    创建cluster集群
    [root@centos7 ~]#redis-cli -a 123456 --cluster create 10.0.0.7:6379 10.0.0.17:6379 10.0.0.27:6379 10.0.0.37:6379 10.0.0.47:6379 10.0.0.57:6379 --cluster-replicas 1
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    >>> Performing hash slots allocation on 6 nodes...
    Master[0] -> Slots 0 - 5460
    Master[1] -> Slots 5461 - 10922
    Master[2] -> Slots 10923 - 16383
    Adding replica 10.0.0.47:6379 to 10.0.0.7:6379
    Adding replica 10.0.0.57:6379 to 10.0.0.17:6379
    Adding replica 10.0.0.37:6379 to 10.0.0.27:6379
    M: f1c86c487d1f77613b0d8b4bf179e5108ab17358 10.0.0.7:6379
       slots:[0-5460] (5461 slots) master
    M: 786672e63751194924bb1abde8e71c2f947e5ddb 10.0.0.17:6379
       slots:[5461-10922] (5462 slots) master
    M: 7c46b4182b3a14ccc5c7e29a08707e49a56b48b8 10.0.0.27:6379
       slots:[10923-16383] (5461 slots) master
    S: 16855d434fe1b75f9f54add196e45a620fda6177 10.0.0.37:6379
       replicates 7c46b4182b3a14ccc5c7e29a08707e49a56b48b8
    S: e34561286f1e99b1aefdd8b94d8dd34fb074a868 10.0.0.47:6379
       replicates f1c86c487d1f77613b0d8b4bf179e5108ab17358
    S: 30a1c6ea3cf780bc1685256d82aeade5e725eae3 10.0.0.57:6379
       replicates 786672e63751194924bb1abde8e71c2f947e5ddb
    Can I set the above configuration? (type 'yes' to accept): yes  ##输入yes自动创建
    >>> Nodes configuration updated
    >>> Assign a different config epoch to each node
    >>> Sending CLUSTER MEET messages to join the cluster
    Waiting for the cluster to join
    ......
    >>> Performing Cluster Check (using node 10.0.0.7:6379)
    M: f1c86c487d1f77613b0d8b4bf179e5108ab17358 10.0.0.7:6379
       slots:[0-5460] (5461 slots) master
       1 additional replica(s)
    M: 7c46b4182b3a14ccc5c7e29a08707e49a56b48b8 10.0.0.27:6379
       slots:[10923-16383] (5461 slots) master
       1 additional replica(s)
    S: e34561286f1e99b1aefdd8b94d8dd34fb074a868 10.0.0.47:6379
       slots: (0 slots) slave
       replicates f1c86c487d1f77613b0d8b4bf179e5108ab17358
    S: 16855d434fe1b75f9f54add196e45a620fda6177 10.0.0.37:6379
       slots: (0 slots) slave
       replicates 7c46b4182b3a14ccc5c7e29a08707e49a56b48b8
    M: 786672e63751194924bb1abde8e71c2f947e5ddb 10.0.0.17:6379
       slots:[5461-10922] (5462 slots) master
       1 additional replica(s)
    S: 30a1c6ea3cf780bc1685256d82aeade5e725eae3 10.0.0.57:6379
       slots: (0 slots) slave
       replicates 786672e63751194924bb1abde8e71c2f947e5ddb
    [OK] All nodes agree about slots configuration.
    >>> Check for open slots...
    >>> Check slots coverage...
    [OK] All 16384 slots covered.
    
    
    查看主从信息
    [root@centos7 ~]#redis-cli -a 123456 -h 10.0.0.7 -c info replication
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    # Replication
    role:master
    connected_slaves:1
    slave0:ip=10.0.0.47,port=6379,state=online,offset=112,lag=0
    master_replid:bd1e9603956dfeaeeeaae0c2f956dcf2959c5070
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:112
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:112
    [root@centos7 ~]#redis-cli -a 123456 -h 10.0.0.17 -c info replication
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    # Replication
    role:master
    connected_slaves:1
    slave0:ip=10.0.0.57,port=6379,state=online,offset=126,lag=0
    master_replid:26d9d8c942dea536271a7db0d35ce3d54c26e0f3
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:126
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:126
    [root@centos7 ~]#redis-cli -a 123456 -h 10.0.0.27 -c info replication
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    # Replication
    role:master
    connected_slaves:1
    slave0:ip=10.0.0.37,port=6379,state=online,offset=126,lag=1
    master_replid:99b64c8da3c279b4392147e909459a7efc6f3001
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:126
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:126
    
    
    验证cluster集群信息
    [root@centos7 ~]#redis-cli -a 123456 cluster info
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    cluster_state:ok
    cluster_slots_assigned:16384
    cluster_slots_ok:16384
    cluster_slots_pfail:0
    cluster_slots_fail:0
    cluster_known_nodes:6
    cluster_size:3
    cluster_current_epoch:6
    cluster_my_epoch:1
    cluster_stats_messages_ping_sent:162
    cluster_stats_messages_pong_sent:169
    cluster_stats_messages_sent:331
    cluster_stats_messages_ping_received:164
    cluster_stats_messages_pong_received:162
    cluster_stats_messages_meet_received:5
    cluster_stats_messages_received:331

    cluster部署完成。

    模拟故障:

    [root@centos7 ~]#redis-cli -a 123456
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    127.0.0.1:6379> SHUTDOWN
    not connected> exit
    [root@centos7 ~]#ss -ntl
    State       Recv-Q Send-Q                            Local Address:Port                                           Peer Address:Port              
    LISTEN      0      100                                   127.0.0.1:25                                                        *:*                  
    LISTEN      0      128                                           *:22                                                        *:*                  
    LISTEN      0      100                                       [::1]:25                                                     [::]:*                  
    LISTEN      0      128                                        [::]:80                                                     [::]:*                  
    LISTEN      0      128                                        [::]:22                                                     [::]:*   
    
    [root@centos7 ~]#redis-cli -a 123456 --cluster info 10.0.0.17:6379
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    Could not connect to Redis at 10.0.0.7:6379: Connection refused
    10.0.0.17:6379 (786672e6...) -> 0 keys | 5462 slots | 1 slaves.
    10.0.0.27:6379 (7c46b418...) -> 0 keys | 5461 slots | 1 slaves.
    10.0.0.47:6379 (e3456128...) -> 0 keys | 5461 slots | 0 slaves.  ##自动提47为master
    [OK] 0 keys in 3 masters.
    0.00 keys per slot on average.
    修复原master(7)后自动降为slave
    
    [root@centos7 ~]#systemctl restart redis
    
    
    [root@centos7 ~]#redis-cli -a 123456 --cluster info 10.0.0.7:6379
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    10.0.0.47:6379 (e3456128...) -> 0 keys | 5461 slots | 1 slaves.
    10.0.0.17:6379 (786672e6...) -> 0 keys | 5462 slots | 1 slaves.
    10.0.0.27:6379 (7c46b418...) -> 0 keys | 5461 slots | 1 slaves.
    [OK] 0 keys in 3 masters.
    0.00 keys per slot on average.
    [root@centos7 ~]#redis-cli -a 123456 cluster nodes
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    f1c86c487d1f77613b0d8b4bf179e5108ab17358 10.0.0.7:6379@16379 slave e34561286f1e99b1aefdd8b94d8dd34fb074a868 0 1603717186966 7 connected
    7c46b4182b3a14ccc5c7e29a08707e49a56b48b8 10.0.0.27:6379@16379 master - 0 1603717186000 3 connected 10923-16383
    e34561286f1e99b1aefdd8b94d8dd34fb074a868 10.0.0.47:6379@16379 master - 0 1603717187970 7 connected 0-5460
    16855d434fe1b75f9f54add196e45a620fda6177 10.0.0.37:6379@16379 slave 7c46b4182b3a14ccc5c7e29a08707e49a56b48b8 0 1603717187000 4 connected
    30a1c6ea3cf780bc1685256d82aeade5e725eae3 10.0.0.57:6379@16379 slave 786672e63751194924bb1abde8e71c2f947e5ddb 0 1603717184000 6 connected
    786672e63751194924bb1abde8e71c2f947e5ddb 10.0.0.17:6379@16379 myself,master - 0 1603717184000 2 connected 5461-10922

    3、部署一个 tomcat 服务

    #!/bin/bash
    #AUTO huangguangrui
    . /etc/init.d/functions
    
    SRC=/usr/local/src
    JDK="jdk-8u271-linux-x64.tar.gz"
    TOMCAT="apache-tomcat-8.5.59.tar.gz"
    JDK_DIR="/usr/local"
    TOMCAT_DIR="/usr/local"
    
    install_jdk(){
    
    cd $SRC 
    
    tar xf ${JDK} -C ${JDK_DIR}
    
    cd ${JDK_DIR}
    ln -s jdk1.8.* jdk
    
    cat > /etc/profile.d/jdk.sh <<-EOF
    export JAVA_HOME=${JDK_DIR}/jdk
    export PATH=$PATH:$JAVA_HOME/bin
    
    export JRE_HOME=$JAVA_HOME/jre
    export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib/
    EOF
    . /etc/profile.d/jdk.sh
    
    java -version && action "JDK 安装成功" || { action "JDK 安装失败" false ;exit ; }
    
    }
    
    
    install_tomcat(){
    
    id tomcat &> /dev/null || useradd  -r -s /sbin/nologin tomcat
    
    cd $SRC
    
    tar xf ${TOMCAT}  -C ${TOMCAT_DIR}
    
    cd ${TOMCAT_DIR}
    
    ln -s apache-tomcat-* tomcat
    echo 'PATH=/usr/local/tomcat/bin:$PATH' > /etc/profile.d/tomcat.sh
    . /etc/profile.d/tomcat.sh
    
    cat > ${TOMCAT_DIR}/tomcat/conf/tomcat.conf <<-EOF
    JAVA_HOME=${JDK_DIR}/jdk
    EOF
    
    chown -R tomcat.tomcat ${TOMCAT_DIR}/tomcat/
    
    cat > /lib/systemd/system/tomcat.service <<-EOF
    [Unit]
    Description=Apache Tomcat Web Application Container
    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
    Group=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

    cd /usr/local/src
    mv jpress-v3.3.0.war /usr/local/tomcat/webapps
    systemctl restart tomcat
    
    [root@centos7 /usr/local/tomcat/webapps]#ls
    docs  examples  host-manager  jpress  jpress-v3.3.0  jpress-v3.3.0.war  manager  ROOT

  • 相关阅读:
    【BZOJ2288】生日礼物 [贪心]
    Tinyhttpd阅读笔记
    数据结构-图-经典算法(三)
    数据结构-图-经典算法(二)
    数据结构-图-经典算法(一)
    TCP协议的滑动窗口协议以及流量控制
    2016腾讯实习电话面试总结---2016-03-10
    B树,B+树,B*树
    平衡二叉树(AVL树)
    二叉搜索树(二叉查找树,二叉排序树)
  • 原文地址:https://www.cnblogs.com/huangguangrui/p/13879323.html
Copyright © 2020-2023  润新知