天道酬勤,学无止境

枫雨

redis去中心化+持久化存储

redis最开始使用主从模式做集群,若master宕机需要手动配置slave转为master;后来为了高可用提出哨兵模式,该模式下有一个哨兵监视master和slave,若master宕机可以自动将slave转为master,但它也有一个问题,就是不能动态扩充;所以3.x提出了cluster集群模式 一、redis-cluster设计 1)redis-cluster采用无中心结构,每个节点保存数据和整个集群状体,每个节点都和其他所有节点连接 2)结构特点 1⃣、所有的redis节彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽 2⃣、节点的fail是通过集群中的超过半数的节点检测失效时才生效 3⃣、客户端与redis节点直连,不需要中间proxy层,客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可 4⃣、redis-cluster把所有的物理节点映射到[0-16383]slot上(不一定是平均分配),cluster负责维护node<->slot<->value 5⃣、redis集群预分好16384个桶,当需要在redis集群中放置一个key-value时,根据CRC16(key) mod 16384的值,决定将一个key放在哪一个桶 3)redis-cluster节点分配 我们现在时三个主节点,分别是:A、B、C三个节点

2021-05-19 07:24:10    分类:博客    枫雨   Linux系统运维

nginx中关键字root与alias的区别

格式nginx指定文件路径有两种方式root和alias,指令的使用方法和作用域:[root]语法:root path默认值:root html配置段:http、server、location、if[alias]语法:alias path配置段:locationroot与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。root的处理结果是:root路径 + location路径alias的处理结果是:使用alias路径替换location路径alias是一个目录别名的定义,root则是最上层目录的定义。还有一个重要的区别是alias后面必须要用“/”结束,否则会找不到文件的,而root则可有可无。例:# 如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/t/a.html的文件。location ^~ /t/ { root /www/root/html/;}# 如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/new_t/a.html的文件。# 注意这里是new_t,因为alias会把location后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。location ^~ /t/ { alias

2021-05-18 18:46:15    分类:博客    枫雨   Linux系统运维

nginx中关键字root与alias的区别

格式nginx指定文件路径有两种方式root和alias,指令的使用方法和作用域:[root]语法:root path默认值:root html配置段:http、server、location、if[alias]语法:alias path配置段:locationroot与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。root的处理结果是:root路径 + location路径alias的处理结果是:使用alias路径替换location路径alias是一个目录别名的定义,root则是最上层目录的定义。还有一个重要的区别是alias后面必须要用“/”结束,否则会找不到文件的,而root则可有可无。例:# 如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/t/a.html的文件。location ^~ /t/ { root /www/root/html/;}# 如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/new_t/a.html的文件。# 注意这里是new_t,因为alias会把location后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。location ^~ /t/ { alias

2021-05-18 18:46:12    分类:博客    枫雨   Linux系统运维

nginx超时时间配置说明

1、client_header_timeout语法 client_header_timeout time默认值 60s上下文 http server(指可以放在http块和server块)说明 指定等待client发送一个请求头的超时时间(例如:GET / HTTP/1.1).仅当在一次read中,没有收到请求头,才会算成超时。如果在超时时间内,client没发送任何东西,nginx返回HTTP状态码408(“Request timed out”)client_body_timeout 语法 client_body_timeout time默认值 60s上下文 http server location说明 该指令设置请求体(request body)的读超时时间。仅当在一次readstep中,没有得到请求体,就会设为超时。超时后,nginx返回HTTP状态码408(“Request timed out”)2、keepalive_timeout (长连接类型)语法 keepalive_timeout timeout [ header_timeout ]默认值 75s上下文 http server location是一个请求完成之后还要保持连接多久,不是请求时间多久,目的是保持长连接,减少创建连接过程给系统带来的性能损耗,类似于线程池,数据库连接池。说明

2021-05-18 18:46:09    分类:博客    枫雨   Linux系统运维

优化CentOS文件描述符及进程数

1、查看最大文件数ulimit -n2、查看最大进程数ulimit -u3、临时修改文件数ulimit -n 2048004、临时修改进程数ulimt -u 2048005、永久修改vim /etc/security/limits.conf* soft nofile 204800 可打开的文件描述符的最大数(软限制)* hard nofile 204800 可打开的文件描述符的最大数(硬限制)* soft nproc 204800 单个用户可用的最大进程数(软限制)* hard nproc 204800 单个用户可用的最大进程数(硬限制)* 所有用户nproc 最大进程nofile 最大文件打开数soft 软限制,当数量达到软限制会出现报警hard 硬限制vim /etc/pam.d/loginsession required /usr/lib64/security/pam_limints.so6、设置系统级别能够打开文件句柄数量echo "fs.file-max=65535" >> /etc/sysctl.confsysctl -p来源:https://blog.51cto.com/u_13520761/2737195

2021-05-18 18:46:01    分类:博客    枫雨   Linux系统运维

安装pg_pathman

1、下载pg_pthamngit clone https://github.com/postgrespro/pg_pathman 2、设置环境变量export PATH=/home/digoal/pgsql9.6:$PATH 3、安装pg_pathmancd pg_pathmanmake USE_PGXS=1make USE_PGXS=1 install 4、修改PostgreSQL配置文件cd $PGDATAvi postgresql.confshared_preload_libraries = 'pg_stat_statements,pg_pathman' 5、重启数据库 6、进入数据库启动插件psqlcreate extension pg_pathman; 7、查看插件是否生效\dx来源:https://blog.51cto.com/u_13520761/2737184

2021-05-18 18:45:58    分类:博客    枫雨   Linux系统运维

dcoker CPU限制

1、--cpu=<value> 1)指定一个容器可以使用多少可用的CPU资源,但无法让容器始终在一个或某几个CPU上运行 2)例如:如果主机有2个CPU,设置--cpus="1.5",则可以报称容器醉倒 容纳一半的CPU,相当于设置--cpu-period="100000"和--cpu-quota="150000"4核服务器中启动centos基础镜像,并设置使用1核CPUdocker run -itd --cpus="1" --name=centos centos7 /bin/bash进入容器,开启4核CPU测试查看容器的资源状态docker stats 08e1adecf3b7查看服务器的CPU资源(由于测试服务器还有其他服务在使用,CPU资源比极高,正常是25%左右)top2、--cpuset-cpus=<value> 1)限制容器可以使用指定的CPU或内核 2)容器可以使用逗号分隔的列表或以连字符分隔的CPU范围。第一个CPU编号为0,有效值可能是0-3(使用第一、第二、第三和第四CPU)或1,3(使用第二或第四CPU)3、--cpu-period=<value> 1)指定CPU CFS调度程序周期,该周期与--cpu-quota一起使用。 2)默认值为100000微秒(100毫秒)。大多数用户不会更改默认设置。对于大多数用例,--cpus是一种更方便的代替方法 4、-

2021-05-12 15:04:56    分类:博客    枫雨   Linux系统运维

Spring Boot微服务集群快速注册启动脚本

#!/bin/bashapp_name=$1pid=`ps aux | grep java | grep ${app_name} | grep -v "grep" | awk '{print $2}'`name=`sed -n "4p" /etc/hosts | awk '{print $2}'`usags() { echo "Usags: boot [eureka|location|config|auth|emqtt|gateway|notification|phonestatisctis] [start|stop|status]" exit 1}#检查程序是否在运行is_exist() { if [ -z "${pid}" ];then return 1 else return 0 fi}#启动is_start() { is_exist if [ $? -eq "0" ];then echo "${app_name} is running" else if [ $app_name == "auth" ];then cd /application/jar/$app_name >nohup.out nohup java -server -Xms1024m -Xmx1204m -jar workos-${app_name}-server.jar > nohup.out 2>&1 &

2021-05-12 14:54:21    分类:博客    枫雨   Linux系统运维

EMQ或EMQ X百万级并发调优(基于CentOS 7)

1、设置句柄数 1)全局分配 sysctl -w fs.file-max=2097152 sysctl -w fs.nr_open=2097152 echo 2097152 > /proc/sys/fs/nr_open echo "fs.nr_open = 2097152" >> /etc/sysctl.conf echo "fs.file-max = 2097152" >> /etc/sysctl.conf sysctl -p 2)服务分配 echo "DefaultLimitNOFILE=1048576" >> /etc/systemd/system.conf 3)用户/进程分配 ulimit -n 1048576 echo "* soft nofile 1048576" >> /etc/security/limits.conf echo "* hard nofile 1048576" >> /etc/security/limits.conf2、设置TCP协议栈网络参数 echo "net.core.somaxconn = 32768" >> /etc/sysctl.conf echo "net.ipv4.ip_local_port_range = 1000 65535" >> /etc/sysctl.conf echo "net.ipv4.tcp_max_syn

2021-05-12 14:47:39    分类:博客    枫雨   Linux系统运维

KVM虚拟化(KVM的部署及使用)

1.虚拟化1.1概念 将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象 、转换后呈现出来并可供分区、组合为一个或多个电脑配置环境。1.2应用数据化的原因 1)同一台物理机运行多个不同版本应用软件 2)硬件依赖性较低 3)便于数据迁移1.3虚拟化的优势 1)提高应用兼容性 2)降低运营成本 3)加速应用部署 4)提高服务器可用性 5)提高资源利用率 6)动态调度资源 7)降低能源消耗2.KVM2.1KVM 1)KVM是开源软件 2)是x86架构且硬件支持虚拟化技术(如intel VT或AMD-V)的Linux全虚拟化解决方案 3)包含为处理器提供底层虚拟化可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko) 4)需要经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面 5)能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)同时KVM还能够使用ksm技术帮助宿主服务器节约内存。2.2Virtual Machine Manager 1)虚拟机管理员,可以让用户管理多个虚拟机 2)创建、编辑、引导或停止虚拟机 3)查看并控制每个虚拟机的控制台 4)查看每部虚拟机的性能及使用率 5

2021-05-12 09:12:43    分类:博客    枫雨   KVM   虚拟化   Linux系统运维