lvs,nginx,haproxy的优缺点及适合场景(转)
Nginx/LVS/HAProxy的基于Linux的开源免费的负载均衡软件。
LVS:使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,它具有很好的可伸缩性、可靠性和可管理性,是一款强大实用的开源软件。
LVS的优点:
1:抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,也保证了均衡器I/O的性能不会受到大流量的影响。;
2:lvs是专门的负载均衡软件,对任何应用都可以做负载均衡;
3:工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案,目前用的比较多的是lvs+keepalived,比较大型的用的多的是lvs+heartbeat。
nginx的优点:
1:Nginx的高并发,同时能承载上万个并发连接;
2:nginx有充足的第三方功能模块的支持,主要通过upstream模块进行负载均衡;
3:nginx对网络的依赖较小,理论上只要Ping得通,网页访问正常,nginx就能连得通;
4:工作在网络的7层之上,可以针对http应用做一些分流的策略,它的正则规则比haproxy更为强大和灵活,这也是它目前广泛流行的主要原因之一,nginx单凭这点可利用的场合就远多于lvs了。
nginx的缺点:
1:将Nginx当做反向代理时,负载均衡功能不是很好,对后端服务器的健康检查功能较弱;
2:nginx仅能支持http、https和email协议,这样就在适用范围上面小些,这个是它的缺点;
3:nginx只支持通过端口来检测,不支持通过url来检测。
haproxy的优点:
1:HAProxy的优点能够补充Nginx的一些缺点,比如支持Session的保持,Cookie的引导;同时支持通过获取指定的url来检测后端服务器的状态;
2:haproxy也是专门的负载均衡软件,Haproxy可以负载http,还可以负载均衡mysql;
3:HAProxy是支持虚拟主机的。
总结这么多,我觉得根据不同的需求,不同的功能,可以选择不同的软件类的负载均衡软件,当然也是可以选择硬件类的负载均衡器。
像对于大型的,需要进行高并发的网站或者对网络不太严格的时候,可以使用nginx;
对于大型的Web服务器的时候可以使用haproxy;
对性能有严格要求的时候可以使用lvs,就单纯从负载均衡的角度来说,lvs也许会成为主流,更适合现在大型的互联网公司。
nginx代理socket tcp/udp
准备一台linux服务器。nginx官网:http://nginx.org/ 。在网上搜到大致用的是 ngx_stream_core_module 这个模块,这里你也可以关注一下官方文档中的其他模块都是做什么的,那么这有相关的启用配置说明,与示例配置。
第一句便是:该ngx_stream_core_module模块是自1.9.0版本。此模块不是默认构建的,应使用配置参数启用 –with-stream 。
那好吧,我们就安装nginx,搞这个的,安装应该都会吧。
1 2 | [root@localhost /]# cd /usr/local/src [root@localhost src]# wget http://nginx.org/download/nginx-1.11.10.tar.gz |
然后解压,解压完,根据文档提示需要使用这个参数–with-stream 来启用功能。
1 | [root@localhost src]# ./configure --prefix=/usr/local/nginx --with-stream |
然后,make,make install。
完成之后就是nginx配置配置文件啦,这个文档中有示例,可知与events模块平级,按照这做就好啦。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | user nobody; worker_processes auto; error_log logs/error.log info; pid logs/nginx.pid; events { worker_connections 1024; } stream { upstream dns_upstreams { server 120.79.11.11:53; server 177.1.22.1:53; } server { listen 53 udp; proxy_pass dns_upstreams; proxy_connect_timeout 1s; proxy_timeout 5s; } } |
nginx获取真实ip——toa模块(转)
toa模块是为了让后端的realserver能够看到真实的clientip而不是lvs的dip。
1、下载http://kb.linuxvirtualserver.org … 86_64.rs.src.tar.gz
2、解压
3、编辑.config,将CONFIG_IPV6=M改成CONFIG_IPV6=y
测试的时候发现如果不改会遇到报错,可以看下这个帖子:http://bbs.linuxtone.org/forum.p … 1631&pid=111599
4、编辑Makefile,可以在EXTRAVERSION =处加上自定义的一些说明,将会在uname -r中显示。比如-shanks.e11.x86_64
5、make -jn
6、make modules_install
7、make install
8、修改/boot/grub/grub.conf 用第一个内核启动
9、reboot
10、装个nginx,试试看能不能看见真实的clientip。
参考:http://kb.linuxvirtualserver.org/wiki/IPVS_FULLNAT_and_SYNPROXY
vzquota : (error) Quota on syscall for id 189: Device or resource busy的解决方法(转)
开启openvz虚拟机的时候总也失败,命令行启动提示错误如下:
vzctl start 189
Starting container …
vzquota : (error) Quota on syscall for id 156: Device or resource busy
vzquota : (error) Possible reasons:
vzquota : (error) – Container’s root is already mounted
vzquota : (error) – there are opened files inside Container’s private area
vzquota : (error) – your current working directory is inside Container’s
vzquota : (error) private area
vzquota : (error) Currently used file(s):
/vz/private/189/var/log
vzquota on failed [3]
————————————————–
最终解决方法如下:
[root@lxy conf]# lsof 2> /dev/null | egrep ‘/vz/root/189|/vz/private/189′
bash 786 root cwd DIR 8,3 4096 8192388 /vz/private/189/fs/root
[root@lxy ~]# ps auxfww |grep 786
root 786 0.0 0.0 2348 1344 pts/0 Ss+ 09:22 0:00 | \_ -bash
[root@lxy ~]# kill -s 9 786
[root@lxy ~]# vzctl start 189
Starting VE …
VE is mounted
Setup slm memory limit
Setup slm subgroup (default)
Setting devperms 20002 dev 0x7d00
Setup ioprio: 4
Adding port redirection to VE(1): 4643 8443
Adding IP address(es) to pool: 203.191.150.111
arpsend: 203.191.150.111 is detected on another computer : 00:13:d3:bf:1e:96
vz-net_add WARNING: arpsend -c 1 -w 1 -D -e 203.191.150.111 eth0 FAILED
Adding IP address(es): 203.191.150.111
arpsend: 203.191.150.111 is detected on another computer : 00:13:d3:bf:1e:96
vz-net_add WARNING: arpsend -c 1 -w 1 -D -e 203.191.150.111 eth0 FAILED
Hostname for VE set: localhost.localdomain
File resolv.conf was modified
VE start in progress…
Oracle安装错误ora-00922(缺少或无效选项)
安装Oracle 11g R2的过程中,在新建数据库实例时出现了该错误,如果选择”忽略”就会出现ora-28000错误。
经网络查询验证,这是属于在前面配置管理员密码的时候,采用了数字开头的密码,Oracle貌似对此不支持,但当时不提示出错,晕倒!据说包含其他非法特殊字符也可能产生此问题。
记录一下,给自己备忘:
ORA-00922: 选项缺失或无效
错误原因:一般是语句的语法有问题。比如命名不对,关键字写错等等。对于非标准的命名,一般采用双引号来创建。
解决办法:
标识符命名规则:
1、必须以字母开始。
2、长度不能超过30个单字节字符。
3、只能包括A-Z,a-z,0-9,_,$和#。
4、不能在相同用户下建立两个同名的对象。
5、不能使用保留字和关键字
ORA-28000: 账户锁定
第一步:使用PL/SQL,登录名为system,数据库名称不变,选择类型的时候把Normal修改为Sysdba;
第二步:选择myjob,查看users;
第三步:选择system,右击点击“编辑”;
第四步:修改密码,把“帐户被锁住”的勾去掉;
第五步:点击“应用”再点击“关闭”;
第六步:重新登录就可以通过验证了;
Linux/BSD下修正磁盘的顺序编号(/dev/sdbX)(转)
假设你现在新建一个分区在磁盘后面的区块,它的编号就应该是/dev/sdb1(假定是Primary分区,或者/dev/sda1什么的取决于第几个磁盘),好了,前面留下来的空白区域再建一个分区,结果区块前面的是/dev/sdb2,后面的反倒是/dev/sdb1了!!!强迫症患者不能忍!!!就像Windows下C、D、E、F盘错位变成了D、C、E、F一样不能忍啊!
解决办法很easy,借助fdisk这个强大的命令,各个BSD/Linux发行版都有的放心。以Fedora为例,终端下执行:
su -c ‘fdisk /dev/sdb’
x
f
w
x、f、w是进入fdisk后执行的指令,x是进入专家模式,f是修正磁盘序号,w写入分区信息并退出fdisk,别弄错了。最好不要在已经挂载的磁盘上执行,所以如果你要这样修改你的机器硬盘的话,建议从LiveCD启动来修正。
好了,强迫症患者心情舒畅了,/dev/sdb1和/dev/sdb2都领到了该有的位置。
P.S. 正因为这个序号容易变动,所以GRUB/GRUB2的配置文件中的分区强烈建议使用UUID而不是/dev/sdbX来表征!
Linux chmod命令 修改文件权限被禁止(not permitted)的解决办法
在主机上搭建的lnmp环境,在修改相关文件有一个html文件的属性的时候
chmod 777 header.html
chmod: changing permissions of `header.html’: Operation not permitted
但是报了上面的一个错误
费了一番周折,终于查到用 chattr 可以解除这个限制
首先先查看一下属性
lsattr header.html
—-i——– header.html
然后去除i这个属性
chattr -i header.html
经过这一步操作后,就可以使用chmod来修改文件属性了
新版Namecheap域名转移到国内注册商35.com的具体办法(图文)
由于国内越来越多的地区现在备案都开始限制只能在国内注册商注册的域名才支持审核备案号了。以前注册优惠过的海外注册商如何移回国内注册商呢?这个文章就示例全过程,如何从新版本下namecheap.com如何移回国内注册商。
此例以移回国内中频35互联(35.com or www.china-channel.com)为示例。
好了,我们现在开始,需要知道的是,转移注册商需要做几个准备工作。
1.我们必须有要转移域名的控制权限,不只是解析权限,我们需要能有改变注册域名的所属邮箱。这个很重要很重要。不然直接会转移失败。
2.我们必须有一个在此示例中的国内注册商来接收你要转移回国内的域名的帐号。
3.帐号中必须有一定的钱。因为你转移回国内是需要续费一年域名注册费的。比如.com一般为100元左右。
有了以上几个准备工作。我们现在就一步步来开始操作吧。
1.登陆namecheap.com网站,依次选择Domain List,所要转换域名的MANAGE按键。点击Domain,关闭WhoisGuard这个保护。如果是老域名了,一般没有这个了。一般是要购买的。这个是whois保护,收费的。
2.选择Sharing & Transfer
如下图所示,按1的unlock解锁,然后2点右边的AUTH CODE。
在这里随便写点什么,我是这样写的。
Due to the need of business expansion, we need to move to new service providers for business development.
好了。这样送出以后。我们所在的域名的所有者邮箱。刚上面已经提到。就会收到一个邮件。是转移注册商的key。这个一会要用到。
这里写的Code,就是我们一会下面要使用到的。这个很重要。要在一定时间内使用完。不然会变。所以我们现在接下来移步。国内注册商。此例为中频35.com为示例。
3.我们现在登陆中频的代理网址https://cp.35.com/chinese/
选择 域名类》注册商转移》【.COM/.NET域名转入】,然后如下图所示这样。
需要注意的是以下这步。中间有一个小问题大家可能要提交前需要先去做的是。如下图。这个注册所有者使用者模版需要先通过注册商的实名认证才可以。如下图所示。这里我们公司已经审核通过完成的。这里就不仔细说明了。大家自己先去创建!各个国内注册商要求不一。无法一一说明,大同小异而已。
然后点下一步,这里会再要求你交钱了。所以刚上面最开始要帐号下有些钱就在这里了。不然没办法支付金额是不行的。一般是一年的费用。然后确定后,如下图所示。10分钟后收一下域名所有者的邮件。会有一个邮件注册商接收确认认证邮件。这步也很重要。
好了。接下来这个图就是邮件内容。会有一个地址给你确认。这边就要用到现有namecheap注册商的转移密码。
复制以上地址到浏览器。打开后会有以下图。输入验证码和namecheap给的转移密码。这样就完成大部分工作了。
好了。看到以上的图就说明我们已经把域名移回国内注册商了。国内注册商已经同意接受你的域名从namecheap移到中频了。然后我们进行以下最后一步。
最后一步也很容易。等邮件就可以了。域名的所有者的邮箱会收到namecheap的确定转移注册商的邮件。如下图所示。我们需要访问一下。并确定。
点击Approve,确定转移,一般过了几天后。在国内注册商的域名列表中就可以找到所转移回来的域名了。
不是很复杂就是步骤有点多。仔细一些都没什么问题。好了,写到这。希望对大家有所帮助。
区块链技术
所谓区块链技术,简称BT(Blockchain technology),也被称之为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可参与数据库记录。
最早是比特币的基础技术,目前世界各地均在研究,可广泛应用于金融等各领域。
区块链的基本原理理解起来并不难。基本概念包括:
交易(Transaction):一次操作,导致账本状态的一次改变,如添加一条记录;
区块(Block):记录一段时间内发生的交易和状态结果,是对当前账本状态的一次共识;
链(Chain):由一个个区块按照发生顺序串联而成,是整个状态变化的日志记录。
如果把区块链作为一个状态机,则每次交易就是试图改变一次状态,而每次共识生成的区块,就是参与者对于区块中所有交易内容导致状态改变的结果进行确认。
阐述编辑
用通俗的话阐述:如果我们把数据库假设成一本账本,读写数据库就可以看做一种记账的行为,区块链技术的原理就是在一段时间内找出记账最快最好的人,由这个人来记账,然后将账本的这一页信息发给整个系统里的其他所有人。这也就相当于改变数据库所有的记录,发给全网的其他每个节点,所以区块链技术也称为分布式账本(distributed ledger)。
VC6 SDK 安装支持VC6的最新SDK的资源与方法详解(适合和我一样的菜鸟)
今天我开始学习王艳平老师的《windows网络与通信程序设计》那本书,里面有一小节讲的是如何获取MAC地址,代码中所需的头文件是VC6所没有的,
需要安装新的SDK。于是就开始从网上寻找资源并且安装,下面是安装流程与资源下载的地址:
1、下载资源
首先将以下资源下载到一个文件夹中(复制地址到迅雷中新建任务即可)。
http://download.microsoft.com/download/platformsdk/
sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.1.cab
http://download.microsoft.com/download/platformsdk/
sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.2.cab
http://download.microsoft.com/download/platformsdk/
sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.3.cab
http://download.microsoft.com/download/platformsdk/
sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.4.cab
http://download.microsoft.com/download/platformsdk/
sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.5.cab
http://download.microsoft.com/download/platformsdk/
sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.6.cab
http://download.microsoft.com/download/platformsdk/
sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.7.cab
http://download.microsoft.com/download/platformsdk/
sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.8.cab
http://download.microsoft.com/download/platformsdk/
sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.9.cab
http://download.microsoft.com/download/platformsdk/
sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.10.cab
http://download.microsoft.com/download/platformsdk/
sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.11.cab
http://download.microsoft.com/download/platformsdk/
sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.12.cab
http://download.microsoft.com/download/platformsdk/
sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.13.cab
http://download.microsoft.com/download/platformsdk/
sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.bat
http://download.microsoft.com/download/platformsdk/
sdk/update/win98mexp/en-us/3790.0/FULL/Extract.exe
2、打开命令行(cmd)移动到该文件夹下并运行批处理文件解压文件
如下载文件夹为d:\temp,则在命令行中先输入d:(回车),再输入temp:(回车)。
之后运行PSDK-FULL.bat d:\sdk(回车),d:\sdk为放解压文件的文件夹。
3、退出命令行到d:\sdk中运行setup.exe。之后会弹出一个安装WEB页。
若提示Versions未定义,打开setup目录,安装CoreSDK-x86.msi等文件即可。
4、若弹出的WEB页只有一段话大意为需要你安装IE,那么首先确认安装了IE,并把它设 置为默认浏览器。之后若安装的是IE8那么还不能进行网页安装,必须取消|Internet 选项 -》 高级 -》启用内存保护帮助减少联机攻击|的选项之后即可出现安装向导。
5、安装完后,配置VC6
手工配置vc6的搜索目录,打开vc6,菜单tools-options-directories。
增加以下路径
executable files
你的platform安装路径\bin
你的platform安装路径\bin\winnt
include file
你的platform安装路径\include
library files
你的platform安装路径\lib