keepalive

keepalive高可用

会有一股神秘感。 提交于 2020-03-10 18:51:56
1.安装yum -y install keepalive 2.编辑配置文件vim /etc/keepalive/keepalive.conf global_defs { router_id backup-node } vrrp_instance VI_1 { state BACKUP#(如果是主节点写MASTER) interface eth0 virtual_router_id 51(主备节点一致) priority 90(主节点要大于从节点) advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.0.2/24(虚ip) } } 3.systemctl start keepalived启动 来源: https://www.cnblogs.com/CLAYJJ/p/12457405.html

http长连接和短连接

怎甘沉沦 提交于 2020-03-10 10:22:56
HTTP实现长连接 HTTP是无状态的 也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个 HTTP 会话 HTTP1.1和HTTP1.0相比较而言,最大的区别就是增加了持久连接支持(貌似最新的 http1.0 可以显示的指定 keep-alive),但还是无状态的,或者说是不可以信任的。 如果浏览器或者服务器在其头信息加入了这行代码 Connection:keep-alive TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了带宽。 实现长连接要客户端和服务端都支持长连接。 如果web服务器端看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1( HTTP 1.1 默认进行持久连接 ),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点, web服务器需要在返回给客户端HTTP头信息中发送一个Content-Length(返回信息正文的长度)头,最简单的实现方法是

TCP的keepalive&HTTP的keep-alive

我怕爱的太早我们不能终老 提交于 2020-03-02 03:52:20
最近工作中遇到一个问题,想把它记录下来,场景是这样的: 从上图可以看出,用户通过Client访问的是LVS的VIP, VIP后端挂载的RealServer是Nginx服务器。 Client可以是浏览器也可以是一个客户端程序。一般情况下,这种架构不会出现问题,但是如果Client端把请求发送给Nginx,Nginx的后端需要一段时间才能返回结果,超过1分30秒就会有问题,使用LVS作为负载均衡设备看到的现象就是1分30秒之后, Client和Nginx链接被断开,没有数据返回。原因是LVS默认保持TCP的Session为90s,超过90s没有TCP报文在链接上传输,LVS就会给两端发送RESET报文断开链接。LVS这么做的原因相信大家都知道一二,我所知道的原因主要有两点: 1.节省负载均衡设备资源,每一个TCP/UDP的链接都会在负载均衡设备上创建一个Session的结构, 链接如果一直不断开,这种Session结构信息最终会消耗掉所有的资源,所以必须释放掉。 2.另外释放掉能保护后端的资源,如果攻击者通过空链接,链接到Nginx上,如果Nginx没有做合适 的保护,Nginx会因为链接数过多而无法提供服务。 这种问题不只是在LVS上有,之前在商用负载均衡设备F5上遇到过同样的问题,F5的Session断开方式和LVS有点区别,F5不会主动发送RESET给链接的两端

axios用法

心不动则不痛 提交于 2020-03-01 01:25:45
axios是什么 基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中 axios的特点 从浏览器中创建 XMLHttpRequests 从 node.js 创建 http 请求 支持 Promise API支持 Promise API 拦截请求和响应 (就是有interceptor,拦截器) 转换请求数据和响应数据 取消请求 自动转换 JSON 数据 客户端支持防御 XSRF //执行get请求 // Make a request for a user with a given ID axios . get ( '/user?ID=12345' ) . then ( function ( response ) { console . log ( response ) ; } ) . catch ( function ( error ) { console . log ( error ) ; } ) ; // Optionally the request above could also be done as axios . get ( '/user' , { params : { ID : 12345 } } ) . then ( function ( response ) { console . log ( response ) ; } ) .

GRE技术的讲解---第一篇(可跟做)

落花浮王杯 提交于 2020-02-26 16:41:20
 通用路由封装协议GRE(Generic Routing Encapsulation) 提供了 将一种协议的报文封装在另一种协议报文中 的机制,是一种 隧道封装技术 。GRE可以 封装组播数据 ,并可以 和IPSec结合使用 ,从而保证语音、视频等组播业务的安全  IPSec 用于在两个端点之间提供安全的IP通信,但 只能加密并传播单播数据,无法加密和传输语音、视频、动态路由协议 信息等组播数据流量  GRE属于 网络层协议 IP协议号为 47 GRE的优点总结:  GRE实现机制简单,对隧道两端的设备负担小  GRE隧道可以通过IPv4网络连通多种网络协议的本地网络,有效利用了原有的网络架构,降低成本  GRE隧道扩展了跳数受限网络协议的工作范围,支持企业灵活设计网络拓扑  GRE隧道可以封装组播数据,和IPSec结合使用时可以保证语音、视频等组播业务的安全  GRE隧道支持使能MPLS LDP,使用GRE隧道承载MPLS LDP报文,建立LDP LSP,实现MPLS骨干网的互通  GRE隧道将不连续的子网连接起来,用于组建 ,实现企业总部和分支间安全的连接 GRE的应用场景  GRE用来对某些网络层协议如IPX(Internet Packet Exchange)的报文进行封装,使这些被封装的报文能够在另一网络层协议(如IP)中传输。

ngx_http_finalize_request的使用

谁说我不能喝 提交于 2020-02-25 19:29:54
情景: 开发了一个http模块,挂在conten-phase阶段, static char * ngx_http_ivms(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) { ngx_http_core_loc_conf_t *clcf; clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module); /* 设置回调函数。当请求http://127.0.0.1/ivms的时候,会调用此回调函数 */ clcf->handler = ngx_http_ivms_loc_handler; return NGX_CONF_OK; } 在ngx_http_ivms_loc_handler中读取包体,回调为ngx_http_ivms_handler; static ngx_int_t ngx_http_ivms_loc_handler(ngx_http_request_t *r) { ngx_int_t rc; rc = ngx_http_read_client_request_body(r, ngx_http_ivms_handler); if (rc >= NGX_HTTP_SPECIAL_RESPONSE) { return rc; } // return NGX

vue 返回滚动位置

只谈情不闲聊 提交于 2020-02-13 01:17:12
list页面要使用keep-alive,这里再app.vue里判断 app.vue <keep-alive> <router-view v-if="$route.meta.keepAlive"></router-view> </keep-alive> <router-view v-if="!$route.meta.keepAlive"></router-view> router.js 使用history模式 scrollBehavior里是具体代码,一开始是在scrollBehavior里获取 document.documentElement.scrollTop || document.body.scrollTop;但是第一次进入页面的时候滚动页面高度无法获取,所以就在list.vue里 beforeRouteLeave方法里设置高度,然后就可以在scrollBehavior return相应的高度了 export default new Router({   mode: "history",   base: "/m/",   scrollBehavior(to, from, savedPosition) {   return { x: 0, y: to.meta.savedPosition || 0 }; }, routes: [   {     path: "/",    

Vue keep-alive实践总结

核能气质少年 提交于 2020-02-05 05:59:30
本文转载自: https://www.cnblogs.com/sysuhanyf/p/7454530.html 作者:sysuhanyf 转载请注明该声明。 <keep-alive> 是 Vue 的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。 <keep-alive> 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和 <transition> 相似, <keep-alive> 是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在父组件链中。 prop: include: 字符串或正则表达式。只有匹配的组件会被缓存。 exclude: 字符串或正则表达式。任何匹配的组件都不会被缓存。 在2.1.0版本Vue中 常见用法: // 组件 export default { name: 'test-keep-alive', data () { return { includedComponents: "test-keep-alive" } } } <keep-alive include="test-keep-alive"> <!-- 将缓存name为test-keep-alive的组件 --> <component></component> </keep-alive> <keep-alive include="a,b"> <!--

HttpClient 教程 (五)

帅比萌擦擦* 提交于 2020-01-27 02:52:21
第五章 HTTP客户端服务 5.1 HttpClient门面 HttpClient接口代表了最重要的HTTP请求执行的契约。它没有在请求执行处理上强加限制或特殊细节,而在连接管理,状态管理,认证和处理重定向到具体实现上留下了细节。这应该使得很容易使用额外的功能,比如响应内容缓存来装饰接口。 DefaultHttpClient是HttpClient接口的默认实现。这个类扮演了很多特殊用户程序或策略接口实现负责处理特定HTTP协议方面,比如重定向到处理认证或做出关于连接持久化和保持活动的持续时间决定的门面。这使得用户可以选择使用定制,具体程序等来替换某些方面默认实现。 DefaultHttpClient httpclient = new DefaultHttpClient(); httpclient.setKeepAliveStrategy(new DefaultConnectionKeepAliveStrategy() { @Override public long getKeepAliveDuration(HttpResponse response, HttpContext context) { long keepAlive = super.getKeepAliveDuration(response, context); if (keepAlive == -1) { //

解决time_wait过多的问题

北城以北 提交于 2020-01-22 11:02:19
vi /etc/sysctl.conf #对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃,不应该大于255,默认值是5,对应于180秒左右时间 net.ipv4.tcp_syn_retries=2 #net.ipv4.tcp_synack_retries=2 #表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为300秒 net.ipv4.tcp_keepalive_time=1200 net.ipv4.tcp_orphan_retries=3 #表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。 net.ipv4.tcp_max_syn_backlog = 4096 #表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击。默认为0,表示关闭 net.ipv4.tcp_syncookies = 1 #表示开启重用tcp连接。允许将TIME-WAIT sockets重新用于新的TCP连接。默认为0,表示关闭 net.ipv4.tcp_tw_reuse = 1 #表示开启TCP连接中TIME-WAIT sockets的快速回收。默认为0,表示关闭 net.ipv4.tcp_tw_recycle = 1