nginx反向代理配置+lnmp优化+七层负载upstream 不念不忘少年蓝@ 2022-09-17 04:20 110阅读 0赞 反代服务器取得内容缓存到本地,然后加速返回给客户端。 缓存命中率高 可以极大的缓解后端服务器压力。影响nginx 一般nginx作为负载均衡器,不会让nginx反向代理去缓存。而是让缓存服务器去缓存。 1.web服务 2.反代 3.伪四层 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16] nat只负责转发过去 但是代理是转述 需要修饰的 nginx既要当成服务端接受用户请求 也要当成客户端去访问互联网 可以理解用户请求的具体信息 并且可以缓存到本地 代理需要监听在套接字上,并且理解这个协议。 代理就是双面人 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_15_color_FFFFFF_t_70_g_se_x_16] ![在这里插入图片描述][d30c9a185ff5404db43224518b5da2b8.png] 后端真实主机 ![在这里插入图片描述][d58cec2f69b34bf99b6b1abf9192d44f.png] ![在这里插入图片描述][d94c9bacb9e141cc8e408ab4d9fa1898.png] ![在这里插入图片描述][fd70493a9d0a4ea1a1d0bd3cc7069946.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_18_color_FFFFFF_t_70_g_se_x_16]nginx代理服务器 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_18_color_FFFFFF_t_70_g_se_x_16 1] ![在这里插入图片描述][7a47ef4ec3ea4ad0a5211fb0764a9640.png] 这个作为反向代理服务器 ![在这里插入图片描述][3babb6ce713d41bca50e141ddee21a0d.png] 自己配置一个虚拟主机 ![在这里插入图片描述][d8f38d166c734fe29434f7c3c0085100.png] 自己不是web服务器 所以不需要root 直接反代到后端主机 直接反代即可 ![在这里插入图片描述][53f6d49775f1423884789fcab08711c1.png] 注意:如果后端代理有多个虚拟主机 proxy_pass就基于ip+端口+或者主机名 ![在这里插入图片描述][2437c314cd404b46a89989729cace3e9.png] ![在这里插入图片描述][4ee5756eb23749e294687981ae2420cf.png] ![在这里插入图片描述][f8e1407bd1f14729a87b9ba66c141281.png] ![在这里插入图片描述][39ee2e67647a482184b7ca892cde9981.png] 如果直接访问Ip就是代理服务器本身的 ![在这里插入图片描述][233e147d14b74c3c910f993fa93e03ed.png] ![在这里插入图片描述][df7a47c5a2f74c4786803c67b4175fc7.png] 本机的包是从代理服务器发送过来的 ![在这里插入图片描述][d62022acca7349a4988759170b664eb1.png] 在启动一个新的后端服务器 ![在这里插入图片描述][6000fc1c95e94a5db34faf7065075e44.png] 默认发布页面 ![在这里插入图片描述][2153b426b7ee4d1fb83934f2ffa2cb92.png] 这个缓存图片 ![在这里插入图片描述][b0d13db4a5dd47a5bbf96d4cd2999225.png] ![在这里插入图片描述][bba775ada0234b55898414d0f2f34aca.png] 希望图片到第二台服务器 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16] ![在这里插入图片描述][723786c58cf34646b3938e76a0f04138.png] ![在这里插入图片描述][bb545c07995543678bc8038daa227042.png] 网关联系不到后端服务器 可能是没有启动 ![在这里插入图片描述][ffcd5e6fba4d40e7b9d67728daf91bee.png] ![在这里插入图片描述][cc21fae0f24140fd98b007991d2d8e49.png] 有了这个功能 动静分离就没问题了 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_17_color_FFFFFF_t_70_g_se_x_16]![在这里插入图片描述][549a77de212945148c4fa669898f354d.png] 不加/意思是只要访问/下的比如/index.html就补充到80后面192.16.10.11/index.html ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_15_color_FFFFFF_t_70_g_se_x_16 1]![在这里插入图片描述][49365a12706346aca0a67b69aecd64af.png] 表示只是把/admin/和图片代理了 ![在这里插入图片描述][dea31a5805204d3193b82f47daac1b77.png] ![在这里插入图片描述][40d108a29c8d40439166966fc8415b5b.png] 后端主机添加目录/admin/ ![在这里插入图片描述][b62068ad377a45daad2635c18b244812.png] ![在这里插入图片描述][d25534749924484ea435f43e65cdebc5.png] ![在这里插入图片描述][581f6d8679d74d0ab5eb33bd9101e66d.png] 就是把整个路径传到后面去了 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_18_color_FFFFFF_t_70_g_se_x_16 2] 添加/ 以为访问/admin/的时候会替换为后端主机/下的内容 ![在这里插入图片描述][bd8ca9c70f74464ebfd0cd09430ac4ca.png] ![在这里插入图片描述][aa502e1b40f4469d93de1f0934c086f1.png] ![在这里插入图片描述][a2f6b4a326fa4d8a9374b986f61c2b48.png] 这种加不加没有区别 ![在这里插入图片描述][6b8b6f09a78346579d89651eb13e5803.png] 正则无法替换 如果在80后面加/就会nginx -t语法错误 ngx_http_proxy_module模块: The ngx_http_proxy_module module allows passing requests to another server. 1、proxy_pass URL; Context: location, if in location, limit_except 注意:proxy_pass后面的路径不带uri时,其会将location的uri传递给后端主机; server { ... server_name HOSTNAME; location /uri/ { proxy http://hos[:port]; } ... } http://HOSTNAME/uri --> http://host/uri proxy_pass后面的路径是一个uri时,其会将location的uri替换为proxy_pass的uri; server { ... server_name HOSTNAME; location /uri/ { proxy http://host/new_uri/; } ... } http://HOSTNAME/uri/ --> http://host/new_uri/ 如果location定义其uri时使用了正则表达式的模式,或在if语句或limt_execept中使用proxy_pass指令,则proxy_pass之后必须不能使用uri; 用户请求时传递的uri将直接附加代理到的服务的之后; server { ... server_name HOSTNAME; location ~|~* /uri/ { proxy http://host; } ... } http://HOSTNAME/uri/ --> http://host/uri/; 意思就是请求时什么 后面就必须时补在后面的而不是替换 一般用户访问后端知识服务器 代理服务器构建后发给后端服务器 后端真实服务器不知道是客户是谁 所以代理服务器可以修改报文首部 就是发往后端服务端的首部的值 添加客户首部IP 或者响应报文发给客户端的首部 2、proxy_set_header field value; 设定发往后端主机的请求报文的请求首部的值;Context: http, server, location proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 实际用这个 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_15_color_FFFFFF_t_70_g_se_x_16 2] 后端抓包看包的首部信息 ![在这里插入图片描述][745b9b2ade3e4189ac72763c992997c9.png] 该日志格式 ![在这里插入图片描述][76a103fa089b48ec92a8c491a99900d0.png] ![在这里插入图片描述][55b46b233aff4dc58ba662f25711d000.png] 本来时%h也就是代理服务器的IP值 现在更换为上面定义的变量 就是客户端的IP ![在这里插入图片描述][274c5b7011094fdb917a16d196b93128.png] ![在这里插入图片描述][6820ff32988f4749b7bd512c2a5613b1.png] 可以看到真正的客户端IP ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 1] ngx\_http\_headers\_module模块 还可以更改代理服务器响应给客户端的时候 送给客户端的 ngx_http_headers_module模块 The ngx_http_headers_module module allows adding the “Expires” and “Cache-Control” header fields, and arbitrary fields, to a response header. 向由代理服务器响应给客户端的响应报文添加自定义首部,或修改指定首部的值; 1、add_header name value [always]; 添加自定义首部; add_header X-Via $server_addr; add_header X-Accel $server_name; ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_17_color_FFFFFF_t_70_g_se_x_16 1]![在这里插入图片描述][78704b2357644472adb1cb37a7a2fa3e.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 1] 代理还可以启动缓存进行加速哦~~ ![在这里插入图片描述][ab2171ac8f9449a39fb6a6e61988eb17.png] ![在这里插入图片描述][e7ab7b1c3ec2442fad429942d4651ac2.png] 这个是代理服务器发送客户端报文允许哪些首部是可以发送过去的 ## 代理还可以启动缓存进行加速哦~~ ## 到后端取回来后放在本地磁盘 直接两个网络IO变成了一个磁盘IO ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 2] 缓存还是文件路由哈希格式 更快 从右而左截取路由编码 找文件首先哈希 然后找很快 在内存哈希表 而后端真实的服务器还是遍历根目录 缓存空间需要先定义 哪个路径proxy\_pass需要缓存 直接调用即可 只有get,head才需要缓存中查看 Post,put,delete不需要 shift+F5强刷 不读取缓存 服务器端也可以发送报文说不需要缓存 缓存空间有限 后端服务器宕机 缓存不新鲜了 nginx不是高档的 只有varnish才可以缓存的很得体 高效的缓存机制 nginx varnish装载同一台主机 解决网络IO延迟 -------------------- nginx启动缓存功能 3、proxy_cache_path 定义可用于proxy功能的缓存;Context: http proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time]; 4、proxy_cache zone | off; 指明要调用的缓存,或关闭缓存机制;Context: http, server, location 5、 proxy_cache_key string; 缓存中用于“键”的内容; 默认值:proxy_cache_key $scheme$proxy_host$request_uri; 6、proxy_cache_valid [code ...] time; 定义对特定响应码的响应内容的缓存时长; 定义在http{ ...}中; proxy_cache_path /var/cache/nginx/proxy_cache levels=1:1:1 keys_zone=pxycache:20m max_size=1g; 定义在需要调用缓存功能的配置段,例如server{ ...}; proxy_cache pxycache; proxy_cache_key $request_uri; proxy_cache_valid 200 302 301 1h; proxy_cache_valid any 1m; ![在这里插入图片描述][2d5314292e8f4e4dac49dc83d2cdafae.png] 放在http中 在默认配置中写 定义缓存路径(磁盘空间) levels顶级子目录级别 设置三级 每级16个 keys\_zone内存分配多大空间 size 10M max\_size磁盘空间最多2g 其他默认 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 3] ![在这里插入图片描述][828aba535e764fee9805e78b309065fb.png] 按需创建 调用缓存 ![在这里插入图片描述][852c0e511aab40f0a480f21b799fed4a.png] 调用缓存名字 定义缓存内容类型 以及定义缓存参数 proxy\_cache\_key定义缓存的Key 有默认的值 对那种方法调用缓存 最少时间缓存项访问次数 use\_stale 对于后端服务器处于什么问题下缓存哪些内容什么情况下还可以使用 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_18_color_FFFFFF_t_70_g_se_x_16 3] ![在这里插入图片描述][53495004180f45fea9282823ac30283c.png] 网页访问主页 这就是文件路由 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_18_color_FFFFFF_t_70_g_se_x_16 4]可以看到相应信息 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 4] ## nginx也需要处理动态服务请求 ## nginx无法内建php模块 处理动态的页面只有fpm-server 找一台主机运行fpm nginx反代给后端 基于fastcgi\_module反代给后端fastcgi模块 作为客户端 而fast\_proxy\_pass则是作为http客户端 所以构建lnmp ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_10_color_FFFFFF_t_70_g_se_x_16] 所以这就是三级结构 本地 只要不是.php结尾 .php就是用fastcg协议i反代给后端 fpm-server 加载完毕运行结果响应给前端主机 需要基于驱动访问数据 基于mysql协议去访问Mysql server ## lnmp ## ![在这里插入图片描述][ca11f0207e414866a400bb559c81256e.png] fcgi server 需要接受请求还要处理并发 还要运行压力很大 所以不如使用AP 代替 aapche工作模式 event preforx worker ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 2] 但是Mysql读取数据很慢 也可以给数据库缓存 memcache 专门的缓存服务器 内存级别 基于内存缓存 支持的数据结构太简单 所以被redis碾压 还支持数据存储 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_15_color_FFFFFF_t_70_g_se_x_16 3] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_17_color_FFFFFF_t_70_g_se_x_16 2] 还可以搞个动静分离 静态的专门去处理静态的页面 ## 搭建lnmp ## 一台主机nginx 处理静态内容 php内容发送给fpm-server 一台主机安装apahce + php ![在这里插入图片描述][207a2e417ab8416c9235cf1986698751.png] php-fpm server + mysql 但是phpMY 有静态有动态 所以放在动态的主机也不容易配置 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_17_color_FFFFFF_t_70_g_se_x_16 3] 配置fpm-server ![在这里插入图片描述][81f6b9b120ff4c96a21a2eec68a3fa83.png] ![在这里插入图片描述][651e1359917446e5a6b42be4c97ad310.png] 不然别的主机连接不进来了 ![在这里插入图片描述][341461d61b164a91bfa51ce9c325b4e7.png] 允许所有连接 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 3] 定义进程数 ![在这里插入图片描述][959176fa81fb4340a727df8f32e6c83c.png] 健康状态检测也启动 ![在这里插入图片描述][686b4c2c51be41e9a4753b8eda9fe97d.png] 因为进程属组是apache ![在这里插入图片描述][05ad53ce7d6749359cd536520584487a.png] php需要文件保存会话 用户信息等 所以该文件用户也应该是apache ![在这里插入图片描述][e2cd99fd71da477fb95e1f932d21df5e.png] ![在这里插入图片描述][4a477f9146b64e8ab06ac3c6eef8f1ab.png] n1主机设置作为前端nginx 前面已经设置了很多 ![在这里插入图片描述][c3f4a53fd8a048abb47c058f8c83cf2d.png] 为了避免冲突 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 4] 新建一个 ![在这里插入图片描述][97e5eeb28b874a68af7fe9448fb000dd.png] index设置主页 需要fastcgi\_module作为客户端进行反代 ![在这里插入图片描述][c8fab69387ed4d5fad3c734864cc8858.png] 前面说到作为代理服务器 代理服务器会隐藏很多客户端信息 但是\[php服务器需要用户信息 生成对应的内容 所以有一文件用来可以展示给php的客户端信息 定义把什么参数传输给后端主机 ![在这里插入图片描述][2a52a76093df4cd0bd0bf594175d5b64.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_18_color_FFFFFF_t_70_g_se_x_16 5] 脚本名称 当客户端请求一个脚本时候需要把脚本名称传递到后端 ![在这里插入图片描述][bcf02d3574004dae91171fce2f223fa3.png] 但是用户访问的脚本名字 fastcgi如何获取到该脚本呢 ? 所以需要有绝对路径 但是一般不在这个 文件中修改 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 5] 分别是fastcgi自己的主页 脚本名称对应再fastcgi服务器下的脚本所在位置 Include表示其他的变量从xx文件获取 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 5]第一个location就是静态内容 第二个location就是动态内容 表示.php都转发 ![在这里插入图片描述][df688c4cc3794497ac0139eb656be767.png] ![在这里插入图片描述][68d36e99f3294bbb918815cb9ef67ad1.png] fpm主机p ![在这里插入图片描述][dd8c610349b3432eb1b7e9e6acf82131.png] 献给nginx配置静态页面 ![在这里插入图片描述][6b223addc3e34030a2755730095f346b.png] ![在这里插入图片描述][7f79f55f7c3a481b8b44bb7e1f43ec50.png] ![在这里插入图片描述][d3328f417261499ea70179596cde3a85.png] ![在这里插入图片描述][ac1ad189f8a34b9485b7a9ef8e32efe7.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 6] 通过php连接mysql php主机 vim /etc/my.cnf.d/server.cnf ![在这里插入图片描述][b7dc7ccd5653461fbc639d01eb8d55c8.png] ![在这里插入图片描述][f3f451c4b3ad4a518a48898aa1854902.png] ![在这里插入图片描述][fe9b0e0f208841b8bf7903b55f0efc2f.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_14_color_FFFFFF_t_70_g_se_x_16] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 7] ![在这里插入图片描述][0b9df69fc9084e51963b07e5e83adb5a.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 8] ![在这里插入图片描述][b86e8c6089ea47cca7fc689d6b68e4a3.png]随机数 ![在这里插入图片描述][2c41506144f94c7eb0f44a150bc6356e.png] 不是.php结尾 所以访问index.php 就是主页 但是没有图片 因为是静态内容 所以拷贝到nginx主机上 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 9] ![在这里插入图片描述][b1ff0878d0194975bb0542c566d6bbb8.png] 同样放到默认的根页面下 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 10] 所以正常 这也就意味着资源包括静态和动态的话都需要一份 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 11] 因为动静分离了 数据库用户root 密码就是安全设置设置的那个 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 12] 继续优化 nginx不处理静态内容 全部proxy\_pass给一个专门处理静态页面的服务器 继续添加主机 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 6] ![在这里插入图片描述][0743b3cf1cc042b69470bbc864a17d77.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 13] 更改默认的根 ![在这里插入图片描述][9d28708d2efa49538ccd05576e68bfbb.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_17_color_FFFFFF_t_70_g_se_x_16 4] ![在这里插入图片描述][dfb9c3fd165e4ce78b874e9b971f0cd9.png] 报错了 查看进程发现httpd服务启动着 ![在这里插入图片描述][73ebef41dc194a539305a56293ae6e35.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 14] ![在这里插入图片描述][e07c20a376ac4710bbdb0c90807bc0ee.png] 前端主机配置 ![在这里插入图片描述][69a0331a28a442b6b742dc52c927e32b.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 15] ![在这里插入图片描述][da5a6311fc404d8b955a871b79ea76f5.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 16] 可以看到请求了各种各样的图片文件 ![在这里插入图片描述][1a0f2840ba6a435da10995a4a8607d79.png] 当然了fastcgi还可以启动缓存优化 ![在这里插入图片描述][5350be5250994c3d8cad881cfa959f6f.png] 指定路径下 几级优化 客户端压测一下 随便找一个另外的主机 172.16.0.67 ![在这里插入图片描述][c0e73c761c094b7d952844755cafda2a.png] ![在这里插入图片描述][fd7a7fe1c1844c3e9f855fd2355651c3.png] ![在这里插入图片描述][dfd14d9db42448b0a744eefd1f49e445.png] ![在这里插入图片描述][7235eb5fd01a481db1f327d6727de304.png] 压测非常慢非常慢 因为是动态页面 所以尝试fastcgi的缓存功能 ![在这里插入图片描述][f9efdae62def463ebdbd3ecb9cd3e257.png] 在http上下文添加 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 17]需要进行调用 ![在这里插入图片描述][453aa7d64b3c4079bb3cf1c533d12e51.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 18] ![在这里插入图片描述][93c1c0a366d7422d8bd334c6df414c78.png] 先curl生成缓存 ![在这里插入图片描述][2e14dc6444c94953b94a6a536bcbe154.png] ![在这里插入图片描述][32e2bbf216834cf0a05140756faaa31c.png] ![在这里插入图片描述][154369d373274e029139932cf34cc738.png] 查看还是没有缓存生成内容 可能生成私有信息 先注释掉缓存 ![在这里插入图片描述][9f025830b7134b1dafe1b2af6da26ebc.png] ![在这里插入图片描述][7ed4701c675943b48a7a04320c5b9352.png] 对默认页面缓存 ![在这里插入图片描述][ea61f0cae8b744869f4812d2d4eceb82.png] 启动缓存 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 19] ![在这里插入图片描述][97e54451bbb24e1285ac5f6824a875bc.png] 速度大大提高 10、fastcgi\_keep\_conn on | off; 请求的时候保持连接打开 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 20] ![在这里插入图片描述][2ed607a80555455e8c10a2a395a73ce4.png] 可以发现速度还是提升了 ![在这里插入图片描述][dda614ed739440a88d31b59b8b79be5a.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 21] ![在这里插入图片描述][99609cb341a04be0a9b05f337ff862f2.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_13_color_FFFFFF_t_70_g_se_x_16] 因为http协议和fastcgi协议并不完全兼容,所以很多变量的值向后方传递需要重新赋值 都可以实现缓存 1.定义缓存 2.调用缓存 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_10_color_FFFFFF_t_70_g_se_x_16 1] 主要就是讲解了两个反代模块 ## nginx实现七层负载upstream实战 ## nginx工作在strem模块下就可以负载均衡四层的 其实就是stream下的upstream负载均衡tcp.udp协议请求的 nginx七层是工作在http的upstream模块 http的upstream负载http请求 上有主机的方式 stream本身是反代 想要负载均衡就需要upsteam haproxy既可以负载均衡也可以代理 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 7] 如果后端是两台动态服务器 用户请求分发到另外一台主机之前的会话也没有了 所以可以会话粘性: 根据用户自身浏览行为 动态服务器本身可以会话缓存 一旦负载均衡 同一用户轮询 之前的会话信息就没有了 解决 1.会话粘性 lvs: sh算法 或者persistence 基于源地址实现的 2.对应应用层可以基于cookie绑定 但是一台服务器宕机了,session丢失 3.应该客户端无状态请求 会话集群 所有后端主机额外做集群 高性能的存储专门存储session 最好是内存级别的(memcache,redis) 连接后端存储主机实现数据的增删改查 memcache一旦宕机数据就没有了 redis可以持久 但是还是单点 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_14_color_FFFFFF_t_70_g_se_x_16 1] nginx是虚拟主机 访问不同的资源去后端不同的主机 静态资源去静态资源服务器 动态资源去动态资源服务器 但是如果后端有2个静态/动态资源服务器呢???? 可以在nginx的upstream定义为一组服务器 所以反向代理的时候可以指向一组 组自己有自己的挑选算法(类似于lvs) ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 8] 一个虚拟主机的不同的location对应不同的组 web负载均衡集群 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_14_color_FFFFFF_t_70_g_se_x_16 2] nginx的upstrem模块自带健康检查功能,后端主机故障可以自动摘除~ 但是nginx又单点了 所以可以加上keepalibed server在http中是虚拟主机,在upstream中是后端真实主机 ![在这里插入图片描述][52f56703418c441290867021feb5875d.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_13_color_FFFFFF_t_70_g_se_x_16 1]![在这里插入图片描述][3032d7f1999c4385abbcf69aea722d2e.png] ![在这里插入图片描述][e176aa763c3b49cea93f54083d5ac448.png] ![在这里插入图片描述][47f3047af2ae4a648bf51e9e40eb192d.png] ![在这里插入图片描述][a16c024249114233b144d097b2226c69.png] ![在这里插入图片描述][31e59e73c5dd48c3ad03d7b5326d15bd.png] ![在这里插入图片描述][1062581d581f4d8a9d7164cd4dece36d.png] 前端主机 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_19_color_FFFFFF_t_70_g_se_x_16] ![在这里插入图片描述][8ccff23dc9714d759f82b1bf6682e8d0.png] 先前的配置先备份一下,先配置简单的 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 22] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_13_color_FFFFFF_t_70_g_se_x_16 2] 这是虚拟主机 在默认配置页定义upstream ![在这里插入图片描述][458dbdd77c0248e398b3a4644cc818cf.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 23] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_19_color_FFFFFF_t_70_g_se_x_16 1] ![在这里插入图片描述][71fab9cc523a409d90201a4ed275eb3c.png] 这就是负载均衡集群 还可以定义权重等等 ![在这里插入图片描述][0e5bddc9ba194ff3a2f49db5bf2aaada.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 24] 先轮询 至少都一边 然后再加权 ![在这里插入图片描述][cbda4c98edba4ef5a1ec5170438729e1.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 25] ![在这里插入图片描述][c2e27003d4574a9190b898d74d271539.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 26]![在这里插入图片描述][83199e08401b47d49e58b41def8f4a0d.png] ![在这里插入图片描述][e7bf7e002c594458a7129b5614b06b6a.png] 意思就是超时1次认为失败 最多失败三次就干掉 当两个服务器都down 设置去访问默认主页 ![在这里插入图片描述][04dce2c89c86437995bf925f2e940218.png] ![在这里插入图片描述][bc7865c9ce254f67a56b6d4f8e2da20b.png] 两个都挂了就上 ![在这里插入图片描述][88306f7a0cc847eb93f4e055d8ad689e.png] 两台主机都停止服务 ![在这里插入图片描述][f9df1cce4a7d456f8d76b9a977c0f59e.png] 再次开启服务 还可以伪装down了实际并没有 类似于灰度测试下 ![在这里插入图片描述][b02beb1b46084817ac312164514f10af.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 27] 再次去掉down恢复正常 也支持sh会话粘性 ![在这里插入图片描述][0e7a6ceb2ab646faa1b7afdd082d73cd.png] 添加ip\_hash 下面的backup需要注释 ![在这里插入图片描述][14e00f48a1ce41f78fcd3516071310c9.png] ![在这里插入图片描述][d94b3da630d3455391d408bef635e7ec.png] hash cookie就会把cookie当键 haproxy还支持很多种 讲haproxy会讲 ![在这里插入图片描述][2e19015240ac45108861d3ee44f5244e.png] 吧来自同一个用户发往同一个请求 ![在这里插入图片描述][acac2145a1804153b3fac7442ac5b2b2.png] ![在这里插入图片描述][b913498023434e3cbf208942030856b2.png] ![在这里插入图片描述][36b616c2c63741fb99004ab69ac3e39b.png] 一致性哈希!! uri一定 适应与反代服务器 用uri的哈希值模2^32次方 范围就在0~ 2^32-1 同理对服务器ip地址做哈希计算 也取模 顺时针找离他近的服务器 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_14_color_FFFFFF_t_70_g_se_x_16 3] 当一个服务器宕机了 只影响一小段 但是如果服务器计算哈希离得很近很近 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_10_color_FFFFFF_t_70_g_se_x_16 2] 所以虚拟节点解决哈希环偏离 加盐 一个加五十个盐 那么3个节点150个点 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 28] ![在这里插入图片描述][572cdb9b280f4346b0b0a77fd72e2b23.png] 这个就是自带虚拟节点的一致性哈希 ![在这里插入图片描述][088c9f8092704779830978b385e0f4d3.png] 多生成页面 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 29] ![在这里插入图片描述][95692fd40aa44cdabac2a754fc9a0449.png] 分别生成20个页面 对于同一个uri第一次绑定后面肯定都在一个服务器 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 30] ![在这里插入图片描述][2fb5ff3dd55748a7b9f468879360aa7a.png] ngx_http_upstream_module模块 The ngx_http_upstream_module module is used to define groups of servers that can be referenced by the proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, and memcached_pass directives. 1、upstream name { ... } 定义后端服务器组,会引入一个新的上下文;Context: http upstream httpdsrvs { server ... server... ... } 2、server address [parameters]; 在upstream上下文中server成员,以及相关的参数;Context: upstream address的表示格式: unix:/PATH/TO/SOME_SOCK_FILE IP[:PORT] HOSTNAME[:PORT] parameters: weight=number 权重,默认为1; max_fails=number 失败尝试最大次数;超出此处指定的次数时,server将被标记为不可用; fail_timeout=time 设置将服务器标记为不可用状态的超时时长; max_conns 当前的服务器的最大并发连接数; backup 将服务器标记为“备用”,即所有服务器均不可用时此服务器才启用; down 标记为“不可用”; 3、least_conn; 最少连接调度算法,当server拥有不同的权重时其为wlc; 4、 ip_hash; 源地址hash调度方法; 5、hash key [consistent]; 基于指定的key的hash表来实现对请求的调度,此处的key可以直接文本、变量或二者的组合; 作用:将请求分类,同一类请求将发往同一个upstream server; If the consistent parameter is specified the ketama consistent hashing method will be used instead. 示例: hash $request_uri consistent; hash $remote_addr; 6、keepalive connections; 为每个worker进程保留的空闲的长连接数量; ![在这里插入图片描述][adaebcb2d8824d92a7a6baa9a8f07d46.png]前面http服务的负载均衡都在http\{\}里面写的 只能用来负载http服务 其余所有四层的代理都应该放在stream模块中 自己无法处理四层服务 所以server必须都有真实的代理 包括http服务本身也可以在四层调度 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_15_color_FFFFFF_t_70_g_se_x_16 4] 举了例子ssh服务 ![在这里插入图片描述][3b015266cace4a388bfc48ebae76404f.png] 吧http的都删除了 ![在这里插入图片描述][6ead8613bb254e1ebc45af9f12856b5a.png] 监听ssh服务 首先监听在22922 监听用户发过来的ssh服务 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_19_color_FFFFFF_t_70_g_se_x_16 2] ![在这里插入图片描述][3e23c196a92b4401b58845d2475dad5b.png] 这个时候就是四层反向代理 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 31] 当然也可以代理web服务 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_15_color_FFFFFF_t_70_g_se_x_16 5]![在这里插入图片描述][ad105475b8a1430b8dd6059a37e19443.png] 定义负载均衡 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 9]![在这里插入图片描述][2bd0b814e65a4b5fa5b9d8120fe898ab.png]![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_13_color_FFFFFF_t_70_g_se_x_16 3] web好验证 轮询的 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_19_color_FFFFFF_t_70_g_se_x_16 3] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 32]![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_17_color_FFFFFF_t_70_g_se_x_16 5]![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_17_color_FFFFFF_t_70_g_se_x_16 6] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_12_color_FFFFFF_t_70_g_se_x_16] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_19_color_FFFFFF_t_70_g_se_x_16 4]只给一个数据库创建mydb ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 33] 可以发现也是轮询的 关闭一个数据库服务 发现也是有健康检查功能哦 -------------------- ## keepalived ## 一般需要奇数个 通过选举选出新的leader 怎么把A干掉 ABC在电源交换机上 这个电源交换机可以通过网络交换信号 多数的方可以干掉节点 BC选择谁是Leader 向电源交换机发信号 切断A的电源 或者闪一下A的电源 让故障节点不要去访问资源–FENCE ![在这里插入图片描述][0a1bcbca6e05413088d5e829552b392f.png] 共享存储前面添加一个信号 A要是干掉 共享存储的需要屏蔽A的信号 不让A去访问资源 ![在这里插入图片描述][d1ab90c4ecdf447c987d31faff9fc893.png] 投票选举是否大于半数 ![在这里插入图片描述][41b9b3e3aeeb488da37621f8c799f6d4.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_14_color_FFFFFF_t_70_g_se_x_16 4]IPVS wrapper生成规则 删除宕掉的机器 再次广播 自己问VIP的MAC地址是什么 免费ARP 其他主机自动更新本地MAC 就是新的路由!!!! ![在这里插入图片描述][9fb4fd3b6ddf47059fd744bed1b04a05.png]![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_18_color_FFFFFF_t_70_g_se_x_16 6] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_18_color_FFFFFF_t_70_g_se_x_16 7] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 34] keepalived: vrrp协议的软件实现,原生设计的目的为了高可用ipvs服务: 基于vrrp协议完成地址流动; 为vip地址所在的节点生成ipvs规则(在配置文件中预先定义); 为ipvs集群的各RS做健康状态检测; 基于脚本调用接口通过执行脚本完成脚本中定义的功能,进而影响集群事务; 组件: 核心组件: vrrp stack ipvs wrapper checkers 控制组件:配置文件分析器 IO复用器 内存管理组件 HA Cluster的配置前提: (1) 各节点时间必须同步; ntp, chrony (2) 确保iptables及selinux不会成为阻碍; 放行多播信息即可 (3) 各节点之间可通过主机名互相通信(对KA并非必须); 建议使用/etc/hosts文件实现; (4) 确保各节点的用于集群服务的接口支持MULTICAST通信; D类:224-239; ![在这里插入图片描述][81adf8b0470d4274a2d06a1219ae3ba7.png]![在这里插入图片描述][abb39d71710f441ebcd372c986dee954.png]![在这里插入图片描述][b1ea31b524a2427b818b9eacbe44fd6e.png] ![在这里插入图片描述][5155ca8123cc48dda87e4fbecfc4ce1f.png] 关闭iptabels 关闭firewalld服务 放行多播信息即可 ![在这里插入图片描述][53a5be8248524698ab05076b8a403c37.png]![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 35] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 36] 多播功能需要打开 ![在这里插入图片描述][7f91af89b0bf4ae28fba76fbbfa3af87.png] keepalived安装配置: CentOS 6.4+ 随base仓库提供; 程序环境: 主配置文件:/etc/keepalived/keepalived.conf 主程序文件:/usr/sbin/keepalived Unit File:keepalived.service Unit File的环境配置文件:/etc/sysconfig/keepalived ![在这里插入图片描述][433e2f1100664ec4b8459734656e8190.png] ![在这里插入图片描述][fab121b338034a81bde2d2bc9d148c6b.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 10]![在这里插入图片描述][0f121cd0f86d47e1a800844dff7b628f.png] ![在这里插入图片描述][8078e35885174ccba6dd7ae195bfc34a.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_18_color_FFFFFF_t_70_g_se_x_16 8] ![在这里插入图片描述][38404c5f0fbb430ab7b2bed7e2d80865.png] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 37] 默认抢占式 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 38] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_19_color_FFFFFF_t_70_g_se_x_16 5] node1优先级高 所以会抢占 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 39] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_17_color_FFFFFF_t_70_g_se_x_16 7] 同理 主节点关闭服务 VIP又飘逸回去 可以看到多播信息 一秒钟发送一个 ![在这里插入图片描述][47956263fa604c1283a65b2a36cb62b2.png] 备用节点也可以收到 ![在这里插入图片描述][cc5e67c7ccf24693ae632413bb9e1441.png] 关闭node1 ![在这里插入图片描述][ad7b860598c84ba2b474267fb835407e.png] node2自己通告 可以看到优先级 这就是vRRp 再高一个虚拟路由器 不同的密码 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 11] 给node2复制 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_19_color_FFFFFF_t_70_g_se_x_16 6] ![在这里插入图片描述][b903f5b65fe84a0c9aa04cd1300f3a96.png] ![在这里插入图片描述][4633002780cb48cfb79470f643b57afa.png] ![在这里插入图片描述][2af87bf2e52c44bf956c3810a46f8ef8.png] ![在这里插入图片描述][ee4caa04cb994dc4abad35165e0766a7.png] 可以看到两组都在通报 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 40] ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_19_color_FFFFFF_t_70_g_se_x_16 7] ![在这里插入图片描述][44ed1a70f0ce445baef8aa546652f8e3.png]都变成优先级高的了 ![在这里插入图片描述][61ddc20b736945389a5ecf5e228706f3.png] man keepalived.conf 123还没有听… [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16]: /images/20220828/36864b64d5db4efdb4cc934926dd25ae.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_15_color_FFFFFF_t_70_g_se_x_16]: /images/20220828/b111a4404d4e410aa599486b999d76a4.png [d30c9a185ff5404db43224518b5da2b8.png]: /images/20220828/c5ec826339104b4eb2b9cccf318cee0f.png [d58cec2f69b34bf99b6b1abf9192d44f.png]: /images/20220828/ca53f84b411042f0924c7c3521c99a9b.png [d94c9bacb9e141cc8e408ab4d9fa1898.png]: /images/20220828/b268458b004647bc854c17d4c134187e.png [fd70493a9d0a4ea1a1d0bd3cc7069946.png]: /images/20220828/e112e965b4e64810ad69c2a288ca03a8.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_18_color_FFFFFF_t_70_g_se_x_16]: /images/20220828/a813a533d46048259732e0d38a2de3b7.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_18_color_FFFFFF_t_70_g_se_x_16 1]: /images/20220828/77867dcaad8a4a09b7382c5393acf390.png [7a47ef4ec3ea4ad0a5211fb0764a9640.png]: /images/20220828/8a7b9c8174284f808e008c405f64494b.png [3babb6ce713d41bca50e141ddee21a0d.png]: /images/20220828/4ff25a84b1484b20be0f96b6eab54538.png [d8f38d166c734fe29434f7c3c0085100.png]: /images/20220828/5bad022c59d84afdb90478bc5f14e819.png [53f6d49775f1423884789fcab08711c1.png]: /images/20220828/dd1afd485008468e97e030fe5de86ae9.png [2437c314cd404b46a89989729cace3e9.png]: /images/20220828/289f5545b2ce4818a421a11fe690169a.png [4ee5756eb23749e294687981ae2420cf.png]: /images/20220828/222da6a8de00477e8534b49d4cdeba9f.png [f8e1407bd1f14729a87b9ba66c141281.png]: /images/20220828/4fb713fab73d47aca37df8da77769b20.png [39ee2e67647a482184b7ca892cde9981.png]: /images/20220828/0a619ca5a5ef4290af46e4d27a919378.png [233e147d14b74c3c910f993fa93e03ed.png]: /images/20220828/abb1f808c9c24594a4b546636ff19736.png [df7a47c5a2f74c4786803c67b4175fc7.png]: /images/20220828/cfb1127966c1402f92c892b87b58d7ca.png [d62022acca7349a4988759170b664eb1.png]: /images/20220828/db0c0b96cf7640418f00f6d4bc5a78f5.png [6000fc1c95e94a5db34faf7065075e44.png]: /images/20220828/2f010312c212410894e7163e83eac570.png [2153b426b7ee4d1fb83934f2ffa2cb92.png]: /images/20220828/1ad49d2f2c1c44aba085a149993e1d65.png [b0d13db4a5dd47a5bbf96d4cd2999225.png]: /images/20220828/a3d90377d58c4b088183cf396c2aefb3.png [bba775ada0234b55898414d0f2f34aca.png]: /images/20220828/d3e2311ea2354d12b03839a7b199b0d9.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16]: /images/20220828/dec3a25acc724aff99f0b6f3bf145d6f.png [723786c58cf34646b3938e76a0f04138.png]: /images/20220828/ca04115872c0400e81256aea4f77c12e.png [bb545c07995543678bc8038daa227042.png]: /images/20220828/b0a440b23d6d445bb4b26ba1ecad15b3.png [ffcd5e6fba4d40e7b9d67728daf91bee.png]: /images/20220828/3ee1ff9021e64c8ca5a81216c78443ec.png [cc21fae0f24140fd98b007991d2d8e49.png]: /images/20220828/5c09e66de99340a2b07ffa8654dcb9fc.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_17_color_FFFFFF_t_70_g_se_x_16]: https://img-blog.csdnimg.cn/788b01520098461bb8b82fc73a949885.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq,size_17,color_FFFFFF,t_70,g_se,x_16 [549a77de212945148c4fa669898f354d.png]: /images/20220828/58a0e620650444d2a75e07a70e9dbd8f.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_15_color_FFFFFF_t_70_g_se_x_16 1]: https://img-blog.csdnimg.cn/ba3a10d7949b40db937c9a006a243278.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq,size_15,color_FFFFFF,t_70,g_se,x_16 [49365a12706346aca0a67b69aecd64af.png]: /images/20220828/6268a3fdc7fc425393ca21d7c364facb.png [dea31a5805204d3193b82f47daac1b77.png]: /images/20220828/4fb3f9950903494b8e19c489f18b138f.png [40d108a29c8d40439166966fc8415b5b.png]: /images/20220828/e3b08a9b38cf48449c72aeae494ae648.png [b62068ad377a45daad2635c18b244812.png]: /images/20220828/3950c870abd4462ab7688d2195c4adf7.png [d25534749924484ea435f43e65cdebc5.png]: /images/20220828/66f106846aae43a889a39ac79ab7aa1a.png [581f6d8679d74d0ab5eb33bd9101e66d.png]: /images/20220828/a707e638d0cd46c9a6d1d5114cb34718.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_18_color_FFFFFF_t_70_g_se_x_16 2]: /images/20220828/1ebfd8f92cb340b8bcdd4548b21e5473.png [bd8ca9c70f74464ebfd0cd09430ac4ca.png]: /images/20220828/2864f351070b48fcbb8ffe6a044dc297.png [aa502e1b40f4469d93de1f0934c086f1.png]: /images/20220828/4d7c2c66fc1f4dafa46afa7866395ffa.png [a2f6b4a326fa4d8a9374b986f61c2b48.png]: /images/20220828/7eebac64397d4837a4ee63fd1674de6e.png [6b8b6f09a78346579d89651eb13e5803.png]: /images/20220828/506166f626d64fc483cfc86647f33fef.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_15_color_FFFFFF_t_70_g_se_x_16 2]: /images/20220828/5056eb6088b145b498a54352a71a86bc.png [745b9b2ade3e4189ac72763c992997c9.png]: /images/20220828/d216545ff89845b89032df44bc0e6b7b.png [76a103fa089b48ec92a8c491a99900d0.png]: /images/20220828/163755ddd7a141ee8af2322717c40dfe.png [55b46b233aff4dc58ba662f25711d000.png]: /images/20220828/9789146c32d94ba38375bc90babe2dd4.png [274c5b7011094fdb917a16d196b93128.png]: /images/20220828/7321581049364eae9f4713ece2075845.png [6820ff32988f4749b7bd512c2a5613b1.png]: /images/20220828/ae1e728baad24565bcbc28c69339552b.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 1]: /images/20220828/b5b197af002d4c0e99151b1ebcd92847.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_17_color_FFFFFF_t_70_g_se_x_16 1]: https://img-blog.csdnimg.cn/375b96b922764cc2a1b6c6cec0894a48.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq,size_17,color_FFFFFF,t_70,g_se,x_16 [78704b2357644472adb1cb37a7a2fa3e.png]: /images/20220828/2f23635d121e4e8dbf230310ca5d6c5a.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 1]: /images/20220828/c99fef9ab46a43538ca412108fc7ce35.png [ab2171ac8f9449a39fb6a6e61988eb17.png]: /images/20220828/70a4aa786f3240eabb4cd7f8a3c4ef4d.png [e7ab7b1c3ec2442fad429942d4651ac2.png]: /images/20220828/5bcf49b97e1343f4af46e2f1710475ff.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 2]: /images/20220828/6478999b0cd64baf9f460634c53ce76a.png [2d5314292e8f4e4dac49dc83d2cdafae.png]: /images/20220828/20016a31257d42a8b8e9d08a46507042.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 3]: /images/20220828/b74db90eccee48bb9cfe9084c661620d.png [828aba535e764fee9805e78b309065fb.png]: /images/20220828/7214ec99ee264f5dbb25d3642d01b88f.png [852c0e511aab40f0a480f21b799fed4a.png]: /images/20220828/6eab2bd6bbec45d98f399a47a0321227.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_18_color_FFFFFF_t_70_g_se_x_16 3]: /images/20220828/321d70ee786e4ec08810a7f12bfe2d21.png [53495004180f45fea9282823ac30283c.png]: /images/20220828/5052f89b10404799b4efaa7861f7aa0d.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_18_color_FFFFFF_t_70_g_se_x_16 4]: /images/20220828/bc67e77f22d14cc7be7e593a427fb11b.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 4]: /images/20220828/65be43e349c5476ebdb4188f11c5a2cd.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_10_color_FFFFFF_t_70_g_se_x_16]: /images/20220828/f61059590d704202bc4541363b3d7cac.png [ca11f0207e414866a400bb559c81256e.png]: /images/20220828/a03ec10752e548cfb682a6818284602b.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 2]: /images/20220828/a2c41b610d494d86bcfe6e2b88cc5100.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_15_color_FFFFFF_t_70_g_se_x_16 3]: /images/20220828/8d736c006b004e75960067d81feb70ee.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_17_color_FFFFFF_t_70_g_se_x_16 2]: /images/20220828/693ed21451eb457b8bdc65b2ae691844.png [207a2e417ab8416c9235cf1986698751.png]: /images/20220828/c9af4360f66b45219d1f98dcbb6efd40.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_17_color_FFFFFF_t_70_g_se_x_16 3]: /images/20220828/0940bc5d631c4719bc41a5aa80e4dd81.png [81f6b9b120ff4c96a21a2eec68a3fa83.png]: /images/20220828/06add2a272f4483fa0465cc18b8332de.png [651e1359917446e5a6b42be4c97ad310.png]: /images/20220828/3c1ea38728d14062ac1e883ae692e7ca.png [341461d61b164a91bfa51ce9c325b4e7.png]: /images/20220828/80776025c93d4f22b986c6653f6e0d0d.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 3]: /images/20220828/77af943200f848c1904dc7fe6096a467.png [959176fa81fb4340a727df8f32e6c83c.png]: /images/20220828/a8f39e92a5c64ac7bcae5ab82266d9d8.png [686b4c2c51be41e9a4753b8eda9fe97d.png]: /images/20220828/e3f7d7e1a2d548be81bab3600a20d10e.png [05ad53ce7d6749359cd536520584487a.png]: /images/20220828/5f2f292d168d459fa20eba49e676b700.png [e2cd99fd71da477fb95e1f932d21df5e.png]: /images/20220828/634eaf5386524ae1a159daebdcfe1889.png [4a477f9146b64e8ab06ac3c6eef8f1ab.png]: /images/20220828/05bc02aff95346d2b3c464224fd36ca7.png [c3f4a53fd8a048abb47c058f8c83cf2d.png]: /images/20220828/5628cadcb2df49eb9cd754f987066c6b.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 4]: /images/20220828/c13bc69310bf44628ebfcf710f2e5e68.png [97e5eeb28b874a68af7fe9448fb000dd.png]: /images/20220828/381d55370a7f4f0b80176937401b0e00.png [c8fab69387ed4d5fad3c734864cc8858.png]: /images/20220828/c2033d47e41a4a44ab5a4acae3806ede.png [2a52a76093df4cd0bd0bf594175d5b64.png]: /images/20220828/bc94e4e1f2114a0e865c70b39c8028c0.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_18_color_FFFFFF_t_70_g_se_x_16 5]: /images/20220828/fff3065677674b7fba10115a77143a73.png [bcf02d3574004dae91171fce2f223fa3.png]: /images/20220828/5f5ffe53c3904500846c885def522167.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 5]: /images/20220828/f28ef445a21b4dad909bd26d2f2084e6.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 5]: /images/20220828/e95831b6a08344879b03241417300269.png [df688c4cc3794497ac0139eb656be767.png]: /images/20220828/7ec350bb3cfe4c348031df5639bf4551.png [68d36e99f3294bbb918815cb9ef67ad1.png]: /images/20220828/a2ff1343390e41d09d8d95e5d4ef4ce3.png [dd8c610349b3432eb1b7e9e6acf82131.png]: /images/20220828/b32da52607214f1fbdadf3ee6491769a.png [6b223addc3e34030a2755730095f346b.png]: /images/20220828/a3e0814cc8b44c7db10a827af1bd6a6b.png [7f79f55f7c3a481b8b44bb7e1f43ec50.png]: /images/20220828/c4791afdacf64e698a14443801850ccd.png [d3328f417261499ea70179596cde3a85.png]: /images/20220828/eb60619e74b34aa288304309a6313bdb.png [ac1ad189f8a34b9485b7a9ef8e32efe7.png]: /images/20220828/b84a57e314644cb387d7868061ea9b3a.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 6]: /images/20220828/115af3c2cfe44a18b76e954ba2960d03.png [b7dc7ccd5653461fbc639d01eb8d55c8.png]: /images/20220828/57ee37ddf37e4655b54b0dd11a37487b.png [f3f451c4b3ad4a518a48898aa1854902.png]: /images/20220828/72bee16cd0d445d6a6a705a0d9f39b70.png [fe9b0e0f208841b8bf7903b55f0efc2f.png]: /images/20220828/aa6a7c964e884a328c19ac3fb6e2a264.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_14_color_FFFFFF_t_70_g_se_x_16]: /images/20220828/c1ffffefc541432e960c7b99d4d61052.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 7]: /images/20220828/cfafbce9895847d4b15142d4b35b40a6.png [0b9df69fc9084e51963b07e5e83adb5a.png]: /images/20220828/53d39cc3d5cc412689d326a0649de623.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 8]: /images/20220828/047dfc81f151465e988c6cbb8590b459.png [b86e8c6089ea47cca7fc689d6b68e4a3.png]: /images/20220828/70bdbeca47c94bc58471489fc983f6b7.png [2c41506144f94c7eb0f44a150bc6356e.png]: /images/20220828/62a35f5daa0f410ab9a23f103a0641c5.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 9]: /images/20220828/6f29b8f22cd24d92ba97a0c8670e5803.png [b1ff0878d0194975bb0542c566d6bbb8.png]: /images/20220828/351098b24c064148855351059c78b8be.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 10]: /images/20220828/b7e90cdd8a634bd9b28258da28c08961.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 11]: /images/20220828/45c37661fd324ebc99930c0a407d705f.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 12]: /images/20220828/85c6f70d5c954da19850d2fe06acb850.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 6]: /images/20220828/dd57cf34339a4f7886bed9cff7a8b2b8.png [0743b3cf1cc042b69470bbc864a17d77.png]: /images/20220828/4bb58bdc493641abbe7480529465bcb3.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 13]: /images/20220828/fcbfec9dc7d14cdea3066c7ea1b405ae.png [9d28708d2efa49538ccd05576e68bfbb.png]: /images/20220828/c02e8f16bffc49f793875dffed4b7917.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_17_color_FFFFFF_t_70_g_se_x_16 4]: /images/20220828/df53aced9fdc4a819940760d1e6897d4.png [dfb9c3fd165e4ce78b874e9b971f0cd9.png]: /images/20220828/5a8690aadee04096958a6c5514d378c8.png [73ebef41dc194a539305a56293ae6e35.png]: /images/20220828/3fe4794f4be34918bd1502bfac8915e9.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 14]: /images/20220828/e05d422fff7f4099b27cc35b5e76d44e.png [e07c20a376ac4710bbdb0c90807bc0ee.png]: /images/20220828/585a1b15a5e044cbb5587693d1dd1354.png [69a0331a28a442b6b742dc52c927e32b.png]: /images/20220828/6e4781abf99c4bb88624682308a7e9cd.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 15]: /images/20220828/869e034737bb47a09c72263cd933bec5.png [da5a6311fc404d8b955a871b79ea76f5.png]: /images/20220828/6888b5ba6188456188b5a2707fd66dec.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 16]: /images/20220828/991405f97b6647ec986a0cb84e2f1542.png [1a0f2840ba6a435da10995a4a8607d79.png]: /images/20220828/04bf748c1cc54e2aabb2d9b22ad2b6ee.png [5350be5250994c3d8cad881cfa959f6f.png]: /images/20220828/f8fb32736bcb4b148e3fe88aaa2c1a6f.png [c0e73c761c094b7d952844755cafda2a.png]: /images/20220828/f81c2ccbe50140929ea6968fc4d8a4d4.png [fd7a7fe1c1844c3e9f855fd2355651c3.png]: /images/20220828/7c2fe66d28024514a8fec5a7177c06df.png [dfd14d9db42448b0a744eefd1f49e445.png]: /images/20220828/47e1ac60cb91439498208a1fbe15f4dc.png [7235eb5fd01a481db1f327d6727de304.png]: /images/20220828/830e110e9b2447d7b2fc176568b26567.png [f9efdae62def463ebdbd3ecb9cd3e257.png]: /images/20220828/0d603c06c5b645719fb40d38c83a047e.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 17]: /images/20220828/e0aeb406ca164c4cad79103ec3c924c7.png [453aa7d64b3c4079bb3cf1c533d12e51.png]: /images/20220828/91d124a140b84c3fab13fe05a2280b3c.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 18]: /images/20220828/f3f2899bc8964a1e8873d13c225b700a.png [93c1c0a366d7422d8bd334c6df414c78.png]: /images/20220828/53abfab2ad044b4381ebfce6d7b5f847.png [2e14dc6444c94953b94a6a536bcbe154.png]: /images/20220828/7938c68a6b37444591e21c8d3d23bda3.png [32e2bbf216834cf0a05140756faaa31c.png]: /images/20220828/71ba6c6df1d840509894794bdac7c5b9.png [154369d373274e029139932cf34cc738.png]: /images/20220828/c9bdfe0c11054d9fa7f101782e438348.png [9f025830b7134b1dafe1b2af6da26ebc.png]: /images/20220828/820196ff3a334db498cdaca59647f069.png [7ed4701c675943b48a7a04320c5b9352.png]: /images/20220828/4644dc25067445a080b2b3ac143673e7.png [ea61f0cae8b744869f4812d2d4eceb82.png]: /images/20220828/44b42930fccf40a687284b695b7610bf.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 19]: /images/20220828/cadc5ba58e894fe9b3f5176e2b5ec807.png [97e54451bbb24e1285ac5f6824a875bc.png]: /images/20220828/7a49066b019e4ec58cb6ed67cb36815f.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 20]: /images/20220828/73565f142fbd4c16ab4c188b48645226.png [2ed607a80555455e8c10a2a395a73ce4.png]: /images/20220828/37904e10df7e4172aaa610595b15d8c3.png [dda614ed739440a88d31b59b8b79be5a.png]: /images/20220828/fa22a19b898e4f568f3ad31c795d66cf.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 21]: /images/20220828/d48160aa510c4893b01d7311d7017445.png [99609cb341a04be0a9b05f337ff862f2.png]: /images/20220828/4ae9076b03ae4492a88fe1b1f6df80c2.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_13_color_FFFFFF_t_70_g_se_x_16]: /images/20220828/7da2c6c20e6d4668935a795d8123001e.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_10_color_FFFFFF_t_70_g_se_x_16 1]: /images/20220828/63281414be524db0bf308dd8b5eab4a5.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 7]: /images/20220828/dbd7fdadcddc4934847d9f7cb695e9dc.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_14_color_FFFFFF_t_70_g_se_x_16 1]: /images/20220828/59eb6c1d8358496a916d575739e49eb6.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 8]: /images/20220828/aed42d623fd440a3aac09af04e8f4fd8.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_14_color_FFFFFF_t_70_g_se_x_16 2]: /images/20220828/642553c23e8849828b4bcf493d0e42a6.png [52f56703418c441290867021feb5875d.png]: /images/20220828/70173fa0401845b2ab0569af412316d4.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_13_color_FFFFFF_t_70_g_se_x_16 1]: https://img-blog.csdnimg.cn/afc9ce5cbfa84b00bf77c791a99e5349.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq,size_13,color_FFFFFF,t_70,g_se,x_16 [3032d7f1999c4385abbcf69aea722d2e.png]: /images/20220828/fb05e831d8a046a18483663ca3a2220e.png [e176aa763c3b49cea93f54083d5ac448.png]: /images/20220828/c0dab619ebe54f50b445853bab9306fa.png [47f3047af2ae4a648bf51e9e40eb192d.png]: /images/20220828/0815ef611ed8465aa1ba69e8e2cb791e.png [a16c024249114233b144d097b2226c69.png]: /images/20220828/ebcdb4ee600741ebb1119abfede38106.png [31e59e73c5dd48c3ad03d7b5326d15bd.png]: /images/20220828/d3f8970ae23b40818620486103ad2ac1.png [1062581d581f4d8a9d7164cd4dece36d.png]: /images/20220828/1c3db4bf87d84f658fbb58e704da306b.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_19_color_FFFFFF_t_70_g_se_x_16]: /images/20220828/fa58bfe387234319ae18ad61ca92b28a.png [8ccff23dc9714d759f82b1bf6682e8d0.png]: /images/20220828/035a28664d9d40b0b74bb5cf17c95ff4.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 22]: /images/20220828/c952014795cc4469a9e0412a23da6590.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_13_color_FFFFFF_t_70_g_se_x_16 2]: /images/20220828/2fcf0cbc0f7b4590b959cc279b9e6e54.png [458dbdd77c0248e398b3a4644cc818cf.png]: /images/20220828/2e1a19fafb9d49f79246a5ef4ee9a654.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 23]: /images/20220828/9a6c912354d94362a867b6169530eb8f.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_19_color_FFFFFF_t_70_g_se_x_16 1]: /images/20220828/e20a39cde4834643aa8d1e7ce0f2bbc4.png [71fab9cc523a409d90201a4ed275eb3c.png]: /images/20220828/d9ae6317f0b54e098139c38827583539.png [0e5bddc9ba194ff3a2f49db5bf2aaada.png]: /images/20220828/75a245c71dff47aa8eb6fe79a519ffe3.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 24]: /images/20220828/2c76fec428454cb4913774fc1eef06c9.png [cbda4c98edba4ef5a1ec5170438729e1.png]: /images/20220828/4a8db88df8d84e91b9a02660c81ab7f6.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 25]: /images/20220828/c1216230d5f0434aa0213505d2879963.png [c2e27003d4574a9190b898d74d271539.png]: /images/20220828/afc4a74b25be48c3a2121afab6297efd.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 26]: https://img-blog.csdnimg.cn/bde86272e3a44c01a6a2ae62b7fa4596.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq,size_20,color_FFFFFF,t_70,g_se,x_16 [83199e08401b47d49e58b41def8f4a0d.png]: /images/20220828/ac9a0a4c33684b31907ffb48524764a0.png [e7bf7e002c594458a7129b5614b06b6a.png]: /images/20220828/3d82d593ed654d0a83e5ddc43dd59f15.png [04dce2c89c86437995bf925f2e940218.png]: /images/20220828/8d554b9e9bd34ab19e588d503c37a299.png [bc7865c9ce254f67a56b6d4f8e2da20b.png]: /images/20220828/8d246b23227d4094a7c4a47b26cbe0f7.png [88306f7a0cc847eb93f4e055d8ad689e.png]: /images/20220828/da015fb341094275a2f652a10ef5361b.png [f9df1cce4a7d456f8d76b9a977c0f59e.png]: /images/20220828/45cc25a15eb544b4972b4c1de5078a86.png [b02beb1b46084817ac312164514f10af.png]: /images/20220828/624493260f2c42c9a307eb05105d74dd.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 27]: /images/20220828/03071c9631794916b55edb11bab9adc6.png [0e7a6ceb2ab646faa1b7afdd082d73cd.png]: /images/20220828/c38ec5bedf524dc9a67def10292b2103.png [14e00f48a1ce41f78fcd3516071310c9.png]: /images/20220828/7b9d72ae38064c498e6002128bfc5d8f.png [d94b3da630d3455391d408bef635e7ec.png]: /images/20220828/3aca3803c47240e0ba17badeba558b3e.png [2e19015240ac45108861d3ee44f5244e.png]: /images/20220828/b147ee2c4f4640c59ed98a840c57f40c.png [acac2145a1804153b3fac7442ac5b2b2.png]: /images/20220828/9710cb1122c8494388830b4a5d8bf25b.png [b913498023434e3cbf208942030856b2.png]: /images/20220828/88ec8766d14f42baa2dca39dcd952325.png [36b616c2c63741fb99004ab69ac3e39b.png]: /images/20220828/e9eeb750e5db47b6b0e7bc5457225390.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_14_color_FFFFFF_t_70_g_se_x_16 3]: /images/20220828/69a4b9a6e7e54c4fa41c8afa8647579f.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_10_color_FFFFFF_t_70_g_se_x_16 2]: /images/20220828/f803437e5ea6462580bcf2958687db0c.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 28]: /images/20220828/90f87654a7ce463bba79182e07e8d821.png [572cdb9b280f4346b0b0a77fd72e2b23.png]: /images/20220828/a2bebd23d0fd4fda9b1cff565d751772.png [088c9f8092704779830978b385e0f4d3.png]: /images/20220828/0cb2a48038154d5c9c0b05e0b9142c46.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 29]: /images/20220828/b725363471bd4ceaa8e1e7565caea66e.png [95692fd40aa44cdabac2a754fc9a0449.png]: /images/20220828/6a42cb451e0547b6b6d45e395cb48db2.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 30]: /images/20220828/0fac5a00d3904e5da7d72b293d85be67.png [2fb5ff3dd55748a7b9f468879360aa7a.png]: /images/20220828/ab275d761d8b47e0b555eee1f8a567bc.png [adaebcb2d8824d92a7a6baa9a8f07d46.png]: /images/20220828/752c8fdb2b6a4c9d93033a22bd8e7f74.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_15_color_FFFFFF_t_70_g_se_x_16 4]: /images/20220828/ab2cd44e8525476980b89181354a000c.png [3b015266cace4a388bfc48ebae76404f.png]: /images/20220828/5f8102880f4f40639c2438236925ff8e.png [6ead8613bb254e1ebc45af9f12856b5a.png]: /images/20220828/080a899275084e7fb7ad374e6611eeb4.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_19_color_FFFFFF_t_70_g_se_x_16 2]: /images/20220828/255d6a322ca74ce5a7ddf5c9e663026a.png [3e23c196a92b4401b58845d2475dad5b.png]: /images/20220828/de140c636476410db086b22846f3f135.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 31]: /images/20220828/b0d3e4a18447494589f78ee5c4ee3f4f.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_15_color_FFFFFF_t_70_g_se_x_16 5]: https://img-blog.csdnimg.cn/fa56101c02274ad58c21acae23f1a7ed.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq,size_15,color_FFFFFF,t_70,g_se,x_16 [ad105475b8a1430b8dd6059a37e19443.png]: /images/20220828/08e3f360cd4d4fc2ba1e9ad6e798cee5.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 9]: https://img-blog.csdnimg.cn/f3abe4d06d2a4027a4600cd3a8e35157.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq,size_16,color_FFFFFF,t_70,g_se,x_16 [2bd0b814e65a4b5fa5b9d8120fe898ab.png]: https://img-blog.csdnimg.cn/2bd0b814e65a4b5fa5b9d8120fe898ab.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_13_color_FFFFFF_t_70_g_se_x_16 3]: /images/20220828/b859949a25d440568cb14d85ee22f83e.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_19_color_FFFFFF_t_70_g_se_x_16 3]: /images/20220828/917a43f7d23346b58ddc5556010a63ba.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 32]: https://img-blog.csdnimg.cn/46053254b2f648fc845b8c21039b7ede.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq,size_20,color_FFFFFF,t_70,g_se,x_16 [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_17_color_FFFFFF_t_70_g_se_x_16 5]: https://img-blog.csdnimg.cn/ff5a4617f22f4407b5240fbf7bf4b9b3.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq,size_17,color_FFFFFF,t_70,g_se,x_16 [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_17_color_FFFFFF_t_70_g_se_x_16 6]: /images/20220828/7d8f74081052489a8fcb6172ee74fa4d.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_12_color_FFFFFF_t_70_g_se_x_16]: /images/20220828/bde1860c2fb347358cf92795a570bf41.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_19_color_FFFFFF_t_70_g_se_x_16 4]: /images/20220828/97450402bcb54dc8acd1783e5701cbff.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 33]: /images/20220828/231f5946a01745b292ee1567d667eaf6.png [0a1bcbca6e05413088d5e829552b392f.png]: /images/20220828/46a49cb8f2434d03806822e8ce306430.png [d1ab90c4ecdf447c987d31faff9fc893.png]: /images/20220828/4acd384d509348b8801b041bed577af2.png [41b9b3e3aeeb488da37621f8c799f6d4.png]: /images/20220828/41420de153c24050afee0f56d13698b5.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_14_color_FFFFFF_t_70_g_se_x_16 4]: /images/20220828/3e07275b5e364eea9c1265c352e8dc78.png [9fb4fd3b6ddf47059fd744bed1b04a05.png]: https://img-blog.csdnimg.cn/9fb4fd3b6ddf47059fd744bed1b04a05.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_18_color_FFFFFF_t_70_g_se_x_16 6]: /images/20220828/9f5b273b55094e4790f51f0e143b0dcb.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_18_color_FFFFFF_t_70_g_se_x_16 7]: /images/20220828/732f701b3b9a4baea9232bdae12ce41c.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 34]: /images/20220828/38a407b7e6fc4a83988fd4004f309172.png [81adf8b0470d4274a2d06a1219ae3ba7.png]: https://img-blog.csdnimg.cn/81adf8b0470d4274a2d06a1219ae3ba7.png [abb39d71710f441ebcd372c986dee954.png]: https://img-blog.csdnimg.cn/abb39d71710f441ebcd372c986dee954.png [b1ea31b524a2427b818b9eacbe44fd6e.png]: /images/20220828/ea0b6a6c19c2406fa7e57a23094af067.png [5155ca8123cc48dda87e4fbecfc4ce1f.png]: /images/20220828/47727b5718a742d8851f0e5b100f572e.png [53a5be8248524698ab05076b8a403c37.png]: https://img-blog.csdnimg.cn/53a5be8248524698ab05076b8a403c37.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 35]: /images/20220828/c746bdea08d44eef8a367edb2cc10b54.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 36]: /images/20220828/bfa78639f796463096490a166d629759.png [7f91af89b0bf4ae28fba76fbbfa3af87.png]: /images/20220828/969986f3f0364b19ae0f6ebd1c7eeeab.png [433e2f1100664ec4b8459734656e8190.png]: /images/20220828/d9f57b28231c44f9b1d167e9219a84ac.png [fab121b338034a81bde2d2bc9d148c6b.png]: /images/20220828/cbae65386585415b855a721ab4d1d068.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 10]: https://img-blog.csdnimg.cn/893648f3ed914d5b8878964e3ed50cf1.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq,size_16,color_FFFFFF,t_70,g_se,x_16 [0f121cd0f86d47e1a800844dff7b628f.png]: /images/20220828/afec5edc50b54152bed23a4d5c99bea6.png [8078e35885174ccba6dd7ae195bfc34a.png]: /images/20220828/dc514eb94ac54f278dd7fdc836d522bd.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_18_color_FFFFFF_t_70_g_se_x_16 8]: /images/20220828/993b70bba3834478af380576d46e3f99.png [38404c5f0fbb430ab7b2bed7e2d80865.png]: /images/20220828/53c4b9aeb2c541c8922aca821f5a773c.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 37]: /images/20220828/0b382ee3b29648bc90a4701b6759a7b7.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 38]: /images/20220828/1173ea3e0caa4c229a01210facbfb4a7.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_19_color_FFFFFF_t_70_g_se_x_16 5]: /images/20220828/4bc979bf871542c0a3429a90bdfaddf3.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 39]: /images/20220828/527d9c660cee48f0bf92a07419debc98.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_17_color_FFFFFF_t_70_g_se_x_16 7]: /images/20220828/22af39141fad4eb3be1dfcdd7501f581.png [47956263fa604c1283a65b2a36cb62b2.png]: /images/20220828/b8440e9f585c4491b32a32487cef3901.png [cc5e67c7ccf24693ae632413bb9e1441.png]: /images/20220828/84858ccdcf7a4e1182d53d764d84ff79.png [ad7b860598c84ba2b474267fb835407e.png]: /images/20220828/cece4b562bb7476e90bc60d2d4d11e4a.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_16_color_FFFFFF_t_70_g_se_x_16 11]: /images/20220828/dfdbda7219b1433d977698d697de281f.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_19_color_FFFFFF_t_70_g_se_x_16 6]: /images/20220828/ee4969528ae54ae6af77a1890ee9b546.png [b903f5b65fe84a0c9aa04cd1300f3a96.png]: /images/20220828/08888a9249e44bda99f56bbbe6ab1296.png [4633002780cb48cfb79470f643b57afa.png]: /images/20220828/991b1227a9e843d9a688444bfadc1a91.png [2af87bf2e52c44bf956c3810a46f8ef8.png]: /images/20220828/b94720baeacb4a4eb2ead92127ea9ad7.png [ee4caa04cb994dc4abad35165e0766a7.png]: /images/20220828/1aa77132943f4f198160f8af612af5ee.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_20_color_FFFFFF_t_70_g_se_x_16 40]: /images/20220828/593b8f0e88134f2e9f798d2fb353b2c8.png [watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5ZW-5ZKq5Zi75ZW-5ZKq_size_19_color_FFFFFF_t_70_g_se_x_16 7]: /images/20220828/0b9266f1be3b40d98bbb8d6498b01ef3.png [44ed1a70f0ce445baef8aa546652f8e3.png]: /images/20220828/b82390dabe2d484dac65e5927243170c.png [61ddc20b736945389a5ecf5e228706f3.png]: /images/20220828/e2225624b0664dc0866adefa077514fb.png
还没有评论,来说两句吧...