lb

高可用系列之Nginx

拈花ヽ惹草 提交于 2020-02-29 12:30:55
1.1 Keepalived 高可用软件 Keepalived 起初是专为 LVS 设计的, 专门用来监控 LVS 集群系统中各个服务节点的状态 ,后来又加入了 VRRP 的功能,因此除了配合 LVS 服务外,也可以作为其他服务( Nginx,Haproxy )的高可用软件, VRRP 是 Virtual Router Redundancy Protocol (虚拟路由器冗余协议)的缩写, VRRP 出现的目的就是为了解决 静态路由 出现的单点故障问题,它能够保证网络的不间断、稳定的运行。所以, keepalived 以方面具有 LVS Cluster nodes healthchecks 功能,另一方面也具有 LVS directors failover 功能。 1.1.1 LVS Directors failover 功能 Ha failover 功能:实现 LB Master 主机和 Backup 主机之间故障转义和自动切换。 这是针对有两个负载均衡器 Director 同时工作而采取的故障转移措施。当主负载均衡器( MASTER )失效或出现故障时,备份负载均衡器( BACKUP )将自动接管主负载均衡的所有工作( vip 资源及相应服务)一旦主负载均衡器( MASTER )故障修复, MASTER 又会接管回它原来处理的工作,而备份负载均衡器( BACKUP )会释放

LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法)

孤者浪人 提交于 2020-02-28 23:37:16
-------------------LVS专题------------------------ LVS原理详解及部署之一:ARP原理准备 LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法) LVS原理详解及部署之三:手动部署LVS LVS原理详解及部署之四:keepalived介绍 LVS原理详解及部署之五:LVS+keepalived实现负载均衡&高可用 ------------------------------------------------- 一、集群简介 什么是集群 计算机集群 简称 集群 是一种 计算机系统 ,它通过一组松散集成的 计算机软件 和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。 集群系统 中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。 集群计算机 通常用来改进单个计算机的计算速度和/或可靠性。一般情况下 集群计算机 比单个计算机,比如工作站或 超级计算机 性能价格比要高得多。 集群就是一组独立的计算机,通过网络连接组合成一个组合来共同完一个任务 LVS在企业架构中的位置: 以上的架构只是众多企业里面的一种而已。绿色的线就是用户访问请求的数据流向。用户-->LVS负载均衡服务器--->apahce服务器--->mysql服务器&memcache服务器&共享存储服务器

最小生成树计数

情到浓时终转凉″ 提交于 2020-02-28 04:53:57
Minimum Spanning Tree http://acm.hdu.edu.cn/showproblem.php?pid=4408 模板题 1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<stack> 5 #include<algorithm> 6 #define mt(a,b) memset(a,b,sizeof(a)) 7 using namespace std; 8 typedef __int64 LL; 9 class MinST_count { ///最小生成树计数o(~=MV^3)+o(MElogME) 10 typedef int typec;///边权的类型 11 typedef LL typer;///返回值类型 12 static const int ME=1024;///边的个数 13 static const int MV=128;///点的个数 14 struct E { 15 int u,v; 16 typec w; 17 friend bool operator <(E a,E b) { 18 return a.w<b.w; 19 } 20 } e[ME]; 21 typer mod,ans,mat[MV][MV]; 22 int n,le,fa[MV],ka

数学建模习题答案

隐身守侯 提交于 2020-02-26 22:15:04
1.建模过程: 将材料1,3做成丙产品会亏本,将材料2做成丙产品不会赚钱,故不做丙产品。并且可以看出材料1最贵,材料2最便宜,故尽可能多用材料2,少用材料1.故产品甲用%50的材料1,%25的材料2,%25的材料3.产品乙用%25的材料1,%50的材料2,%25的材料3。. 2.变量说明: 将x1,x2分别设为产品甲的质量和产品乙的质量(kg)。 利润为z=2.5x1-2.5x2; .3.约束条件: 0.5x1+0..25x2<=100 0.25x1+0.5x2<=100 0.25x1+0.25x2<=60; X1>=0 X2>=0 4.结果: 将其用matlab软件进行计算,得到做200kg甲产品和0kg乙产品时利润最大,为500元。 5.matlab代码: c = - 2.5000 2.5000 >> A = [ 0.5 , 0.25 ; 0.25 , 0.5 ; 0.25 , 0.25 ] A = 0.5000 0.2500 0.2500 0.5000 0.2500 0.2500 >> b = [ 100 ; 100 ; 60 ] b = 100 100 60 >> Aeq = [ 0 , 0 ] Aeq = 0 0 >> beq = 0 beq = 0 >> lb = [ 0 ; 0 ] lb = 0 0 >> linprog ( c , A , b , Aeq , beq

最大化最小值

穿精又带淫゛_ 提交于 2020-02-19 21:54:29
POJ3258 题意: 有一堆牛要过河,河的长度是 L,河中间有N个石头,牛只能踩着石头过河,问去掉M个石头后(去掉这M个石头的方式是随机的),牛能走的石头间距最小值中,最大的那一个是多少,输出距离。 开始和最后的两块石头不能搬走。 解法: 最大化石头间距的最小值 二分距离,从左到右遍历所有的石头(包括首尾),在判断距离之内不停的搬走石头,当石头总数大于M的时候即是错误。 代码如下: 1 int L, M, N; 2 int pos[MAXN]; 3 4 bool C(int x) { 5 int sum = 0, last = 0; 6 for (int i = 1; i <= N + 1; i++) { 7 if (pos[i] - pos[last] < x) { 8 sum++; 9 if (sum > M) { 10 return false; 11 } 12 } else { 13 last = i; 14 } 15 } 16 return true; 17 } 18 19 void jojo() { 20 sort(pos, pos + N + 1); 21 int lb = 0, ub = L + 1; 22 while (ub - lb > 1) { 23 int mid = (ub + lb) / 2; 24 if (C(mid)) { 25 // cout <

LVS负载均衡

风格不统一 提交于 2020-02-08 05:21:09
Nginx反向代理型负载 负载均衡(load balance)集群,提供了一种廉价、有效、透明的方法,来扩展网络设备和服务器的负载、带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 单台计算机无法承受大规模的并发访问,或者数据流量。此时需要搭建负载均衡集群把流量分摊到多台节点设备上分别处理,即减少用户的等待响应的时间,又提升了用户体验; 7*24小时的服务保证,任意一个或者多个有限后端节点宕机,不能影响整个业务的运行。 为什么还要学习LVS 工作在网络模型的7层,可以针对http应用做一些分流的策略,比如针对域名、目录结构,Nginx单凭这点可利用的场合就远多于LVS了。 最新版本的Nginx也支持4层TCP负载,曾经这是LVS比Nginx好的地方。 Nginx对网路稳定性的依赖非常小,理论上能ping通就能进行负载均衡,这个也是它的优势之一,相反LVS对网络稳定性依赖比较大。 Nginx的安装配置比较简单,测试起来比较方便,它基本能把错误用日志打印出来。LVS的配置、测试就要花比较长的时间了,LVS对网络依赖比较大。 懵逼了,Nginx这么好用,为什么还要用LVS。 简单一句话,当并发量超过Nginx上线,就可以使用LVS了。 日1000-2000W PV 或者并发请求10000一下都可以考虑用Nginx。 大型门户网站,点上网站需要用到LVS。

《数据结构》-算法2.7

独自空忆成欢 提交于 2020-02-05 03:45:29
void MergeList_Sq(SqList La, SqList Lb, SqList *Lc) { // 已知顺序线性表La和Lb的元素按值非递减排列。 // 归并La和Lb得到新的顺序线性表Lc,Lc的元素也按值非递减排列 ElemType *pa, *pa_last, *pb, *pb_last, *pc; pa = La.elem; pb = Lb.elem; Lc->listsize = Lc->length = La.length + Lb.length; // 不用InitList()创建空表Lc pc = Lc->elem = (ElemType *)malloc(Lc->listsize * sizeof(ElemType)); if (!Lc->elem) // 存储分配失败 exit(-1); pa_last = La.elem + La.length - 1; pb_last = Lb.elem + Lb.length - 1; while (pa <= pa_last && pb <= pb_last) // 表La和表Lb均非空 { // 归并 if (*pa <= *pb) *pc++ = *pa++; // 将pa所指单元的值赋给pc所指单元后,pa和pc分别+1(指向下一个单元) else *pc++ = *pb++; //

无缝轮播图

我的未来我决定 提交于 2020-02-04 23:04:50
编辑本博客 巧用定时器 获取标签方式 清理定时器 记住当前位置 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>无缝轮播</title> <style> *{ padding: 0; margin: 0; } ul{ list-style:none; } .warper{ width: 400px; height: 319px; /*background-color: #A9A9A9;*/ margin: 0 auto; overflow: hidden; position: relative; } ul li{ float: left; } ul{ width: 800%; position: absolute; top: 0; left: 0; } ul li img{ width: 400px; height: 319px; } </style> </head> <body> <div id="lb" class="warper"> <ul> <li><img src="img/lb/1.jpg"> </li> <li><img src="img/lb/2.jpg"> </li> <li><img src="img/lb/3.jpg"> </li> <li><img src="img

Matlab优化工具箱和模拟退火算法

霸气de小男生 提交于 2020-01-31 10:33:45
Matlab优化工具箱主要有以下4种求解器: 1.最小值优化 2.多目标最小值优化 3.方程求解器 4.最小二乘(曲线拟合)求解器 一.最小值优化: 1.标量最小值优化:使用函数fminbnd 例:对边长为3m的正方形铁板,在4个角处剪去相等的正方形,以制成方形无盖水槽,问如何剪才能使水槽的容积最大? 方程:V=(3-2x)^2x function f = myfun1(x) f = -(3-2*x).^2 * x; % 由于fminbnd只能用来计算最小值,所以这里加负号 x = fminbnd(@myfun1,0,1.5) % x = fminbnd(fun,x1,x2):返回标量函数fun在条件x1 < x < x2下取最小值时自变量x的值 y= -myfun1(x) % 调用myfun1函数来计算水槽的最大容积 2.无约束最小值优化:使用函数fminunc和fminsearch 例:求函数f(x)=3x1^2+2x1x2+x2^2最小值 function f = myfun2(x) f = 3*x(1)^2 + 2*x(1)*x(2) + x(2)^2; % 目标函数 x0 = [1,1]; % 初始值,可以是标量,向量,矩阵,即从这个值开始找,不熟悉的话可以多试几次,取最优的 [x,fval] = fminunc(@myfun2,x0) % x为自变量,fval为函数值

几个算法编程题

≡放荡痞女 提交于 2020-01-28 03:15:46
1. 输入 30 个数到一个 5 行 6 列数组,经排序后该数组各元素值按行从小到大排列,并显示该二维数组。要求:不能把次二维数组转存到一位数组中。 1 //输入二维数组时,以行为单位,每行各个元素之间以空格隔开 2 #include <stdio.h> 3 4 #define row 5 5 #define col 6 6 7 int main() { 8 int array[row][col], i=0, j=0, a, b, swap; 9 printf("please enter your %d*%d array: \n", row, col); 10 while(i < row){ 11 //no newline after %d sequence 12 scanf("%d %d %d %d %d %d", 13 &array[i][0], &array[i][1], &array[i][2], &array[i][3], &array[i][4], &array[i][5]); 14 i++; 15 } 16 17 printf("\nhere is your input: \n"); 18 for(i = 0; i < row; i++){ 19 for(j = 0; j < col; j++){ 20 printf("%d ", array[i][j]); 21 }