美文网首页
Redis单点搭建

Redis单点搭建

作者: OrangeLoveMilan | 来源:发表于2020-05-25 10:34 被阅读0次

    Redis 单点部署

    服务器信息

    ip 系统 配置 目录
    172.24.32.200 centos7.7 2c4g /data/redis/

    部署

    官网

    https://redis.io/topics/quickstart
    

    1、单机部署

    关闭防火墙

    sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
    setenforce 0
    systemctl stop firewalld
    systemctl disable firewalld
    

    安装依赖

    yum install wget vim net-tools gcc -y
    

    创建目录

    mkdir -p /data/redis && cd /data/redis
    
    wget http://download.redis.io/redis-stable.tar.gz
    tar xvzf redis-stable.tar.gz
    cd redis-stable
    

    踩坑1

    cd src && make all
    make[1]: Entering directory `/data/redis/redis-stable/src'
        CC adlist.o
    In file included from adlist.c:34:0:
    zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory
     #include <jemalloc/jemalloc.h>
                                   ^
    compilation terminated.
    make[1]: *** [adlist.o] Error 1
    make[1]: Leaving directory `/data/redis/redis-stable/src'
    make: *** [all] Error 2
    

    查看README

    Allocator
    ---------
    
    Selecting a non-default memory allocator when building Redis is done by setting
    the `MALLOC` environment variable. Redis is compiled and linked against libc
    malloc by default, with the exception of jemalloc being the default on Linux
    systems. This default was picked because jemalloc has proven to have fewer
    fragmentation problems than libc malloc.
    
    To force compiling against libc malloc, use:
    
        % make MALLOC=libc
    
    To compile against jemalloc on Mac OS X systems, use:
    
        % make MALLOC=jemalloc
    
    Verbose build
    
    

    重新编译

     make MALLOC=libc
    

    踩坑2

                            ^
    server.c:5117:15: error: ‘struct redisServer’ has no member named ‘maxmemory’
         if (server.maxmemory > 0 && server.maxmemory < 1024*1024) {
                   ^
    server.c:5117:39: error: ‘struct redisServer’ has no member named ‘maxmemory’
         if (server.maxmemory > 0 && server.maxmemory < 1024*1024) {
                                           ^
    server.c:5118:176: error: ‘struct redisServer’ has no member named ‘maxmemory’
             serverLog(LL_WARNING,"WARNING: You specified a maxmemory value that is less than 1MB (current value is %llu bytes). Are you sure this is what you really want?", server.maxmemory);
                                                                                                                                                                                    ^
    server.c: In function ‘hasActiveChildProcess’:
    
    

    查看gcc版本并且升级

    [root@localhost redis-stable]# gcc -v
    Using built-in specs.
    COLLECT_GCC=gcc
    COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
    Target: x86_64-redhat-linux
    Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
    Thread model: posix
    gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
    

    升级gcc

    yum -y install centos-release-scl
    yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
    ##临时生效
    scl enable devtoolset-9 bash
    ##永久生效
    echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
    

    重新编译

    make && make install
    

    2、修改配置文件

    mkdir -p /etc/redis
    cp redis.conf /etc/redis/redis_16379.conf
    ###绑定的ip
    sed -i 's|bind 127.0.0.1|bind 172.24.32.200|g' /etc/redis/redis_16379.conf
    
    ###修改默认端口
    sed -i 's|port 6379|port 16379|g' /etc/redis/redis_16379.conf
    
    ###守护进程
    sed -i 's|daemonize no|daemonize yes|g' /etc/redis/redis_16379.conf
    
    ###加密码
    sed -i '$arequirepass aj3jaHSk3n4' /etc/redis/redis_16379.conf
    
    ###redis日志
    sed -i 's|logfile ""|logfile "/var/log/redis.log"|g' /etc/redis/redis_16379.conf
    
    

    启动文件

    cat >>/usr/lib/systemd/system/redis16379.service<<EOF
    [Unit]
    Description=redis16379
    After=network.target
    
    [Service]
    Type=forking
    PIDFile=/var/run/redis_16379.pid
    ExecStart=/usr/local/bin/redis-server /etc/redis/redis_16379.conf
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s QUIT $MAINPID
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    EOF
    

    启动和开机自启动

    systemctl start redis16379
    systemctl enable redis16379
    

    查看/var/log/redis.log,解决告警

    20627:M 10 May 2020 22:39:22.774 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
    20627:M 10 May 2020 22:39:22.774 # Server initialized
    20627:M 10 May 2020 22:39:22.775 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
    20627:M 10 May 2020 22:39:22.775 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
    20627:M 10 May 2020 22:39:22.775 * Ready to accept connections
    

    解决告警

    echo 511 > /proc/sys/net/core/somaxconn
    echo "net.core.somaxconn= 1024" >>/etc/sysctl.conf
    sysctl -p
    echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf
    sysctl vm.overcommit_memory=1
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    

    开机自启动文件

    cat>>/etc/rc.local<<EOF
    ##kernel
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    EOF
    
    chmod +x /etc/rc.local
    

    相关文章

      网友评论

          本文标题:Redis单点搭建

          本文链接:https://www.haomeiwen.com/subject/wwgeahtx.html