通知设置 新通知
vim问题ycm_client_support.[so|pyd|dll] and ycm_core.[so|pyd|dll] not detected解决
being 发表了文章 0 个评论 4840 次浏览 2016-01-04 21:55
ycm_client_support.[so|pyd|dll] and ycm_core.[so|pyd|dll] not detected; you need to compile YCM before using it. Read the docs!这个需要到~/.vim/bundle/YouCompleteMe,你的YCM目录下,加入如下命令解决:
./install.sh --clang-completer但是执行过程中错误如下:
Some folders in /home/sky-tm/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party are empty; you probably forgot to run: git submodule update --init --recursive遇错解错,按照提示按照呗:
git submodule update --init --recursive等执行完成后,再次执行命令
./install.sh --clang-completer又报错了!!!!
Your C++ compiler supports C++11, compiling in that mode.执行如下命令解决,按照clang
Downloading Clang 3.5
CMake Error at ycm/CMakeLists.txt:62 (message):
No pre-built Clang 3.6 binaries for 32 bit linux. You'll have to compile
Clang 3.6 from source. See the YCM docs for details on how to use a
user-compiled libclang.
./install.sh --clang-completer --system-libclang然后在执行:
./install.sh --clang-completer结果为:
build成功了!终于解决了!
几个手机号码归属地查询api接口
Ansible 发表了文章 0 个评论 4945 次浏览 2016-01-02 03:16
淘宝网
API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443参数:
- []tel:手机号码[/][]返回:JSON[/]
拍拍
API地址: http://virtual.paipai.com/extinfo/GetMobileProductInfo?mobile=15850781443&amount=10000&callname=getPhoneNumInfoExtCallback参数:
- []mobile:手机号码[/][]callname:回调函数[/][]amount:未知(必须)[/][]返回:JSON[/]
财付通
API地址: http://life.tenpay.com/cgi-bin/mobile/MobileQueryAttribution.cgi?chgmobile=15850781443参数:
- []chgmobile:手机号码[/][]返回:xml[/]
百付宝
API地址: https://www.baifubao.com/callback?cmd=1059&callback=phone&phone=15850781443参数:
- []phone:手机号码[/][]callback:回调函数[/][]cmd:未知(必须)[/][]返回:JSON[/]
115
API地址: http://cz.115.com/?ct=index&ac=get_mobile_local&callback=jsonp1333962541001&mobile=15850781443参数:
- []mobile:手机号码[/][]callback:回调函数[/][]返回:JSON[/]
有道
API地址:http://www.youdao.com/smartresult-xml/search.s?type=mobile&q=13892101112参数:
- []type : 参数手机归属地固定为mobile[/][]q : 手机号码[/]
返回XML格式:
或者
13892101112
陕西 延安
http://www.youdao.com/smartresult-xml/search.s?jsFlag=true&type=mobile&q=手机号码返回JSON格式:
fYodaoCallBack(1, {‘product’:'mobile’,'phonenum’:’13892101112′,’location’:'陕西 延安’} , ”);
096.me
API接口:http://www.096.me/api.php?phone=手机号&mode={txt,xml}
举例:http://www.096.me/api.php?phone=13892101111&mode=txt返回
13892101111||陕西延安移动全球通卡 ||吉凶参半,惟赖勇气,贯彻力行,始可成功 吉带凶||
举例:http://www.096.me/api.php?phone=13892101111&mode=xml返回
13892101111 陕西延安移动全球通卡 吉凶参半,惟赖勇气,贯彻力行,始可成功 吉带凶
浅谈开源工具自动化运维阶段
Rock 发表了文章 1 个评论 6923 次浏览 2016-01-02 00:48
前言
随着各种业务对IT的依赖性渐重以及云计算技术的普及,企业平均的IT基础架构规模正不断扩张。
有些Web 2.0企业可能会需要在两个星期内增加上千台服务器,因此对运维而言,通过手动来一个一个搭建的方法不仅麻烦、效率低下,而且非常不利于维护和扩展。
即使是在传统的企业当中,日常的备份、服务器状态监控和日志,通过手动的方式来进行的效率也很低,是一种人力的浪费。因此,自动化早已是每个运维都必须掌握的看家本领。
在不同的企业中,自动化的规模、需求与实现方式都各不相同,因此在技术细节层面,运维之间很难将别的企业的方法整个套用过来。然而在很多情况下,自动化的思路是有共通之处的。
运维自动化前三阶段
- []纯手工阶段:手工操作重复地进行软件部署和运维;[/][]脚本阶段:通过编写脚本、方便地进行软件部署和运维;[/][]工具阶段:借助第三方工具高效、方便地进行软件部署和运维。[/]
这几个阶段是随着运维知识、经验、教训不断积累而不断演进的。而且,第2个阶段和第3个阶段可以说是齐头并进,Linux下的第三方工具虽说已经不少了,但是Linux下的脚本编写对运维工作的促进作用是绝对不可以忽视的。在DevOps出现之前,运维工作者在工作中还是以这两种方式为主。
1、预备类工具:KickstartLinux下好用的开源工具
kickstart安装是redhat开创的按照你设计好的方式全自动安装系统的方式。安装方式可以分为光盘、硬盘、和网络。Cobbler
Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows。该工具使用python开发,小巧轻便(才15k行代码),使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP,DNS,以及yum包镜像。OpenQRM
openQRM提供开放的插件管理架构,你可用很轻松的将现有的数据中心应用程序集成到其中,比如Nagios和VMware。openQRM的自动化数据中心操作不但可用帮助你提高可用性,同时还可以降低您企业级数据中心的管理费用。针对数据中心管理的开源平台,针对设备的部署、监控等多个方面通过可插拔式架构实现自动化的目的,尤其面向云计算/基于虚拟化的业务。Spacewalk
Spacewalk可管理Fedora、红帽、CentOS、SUSE与Debian Linux服务器。当你的数据中心拥有多台Linux服务器时,手动管理将不再是一个好的选择。Spacewalk就可以管理补丁、登录、更新。
[b]在自动化运维和大数据云计算时代实现预设自动化安装服务器环境、应用环境等不仅可以提高运维效率,而且还能大大减少运维的工作任务及出错概率。尤其是对于在服务器数量按几百台、几千台增加的公司而言,单单是装系统,如果不通过自动化来完成,其工作量和周期不可想象。[/b]2、配置管理类工具:前浪:Chef
Chef是一个系统集成框架,可以用Ruby等代码完成服务器的管理配置并编写自己的库。ControlTier
ControlTier是一个完全开放源码系统的自动化服务管理活动的多个服务器和多个应用层(代码,数据,配置和内容) 。共同使用的ControlTier包括部署应用程序,控制它们的状态,并运行按需行政工作在多个服务器上。ControlTier是跨平台和工程同样的物理服务器,虚拟机,或云计算基础设施。Func
Func是由红帽子公司以Fedora统一网络控制器Func,目的是为了解决这一系列统一管理监控问题而设计开发的系统管理基础框架,它是一个能有效的简化我们众多服务器系统管理工作的工具,其具备容易学习,容易使用,更容易扩展;功能强大而且配置简单等优点。Puppet
puppet是一个开源的软件自动化配置和部署工具,它使用简单且功能强大,正得到了越来越多地关注,现在很多大型IT公司均在使用puppet对集群中的软件进行管理和部署。后浪SaltStack
Salt一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。Ansible
Ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能。
[b]在进行大规模部署时,手工配置服务器环境是不现实的,这时必须借助于自动化部署工具。[/b]3、监控类工具Nagios
Nagios是一款免费的开源IT基础设施监控系统,其功能强大,灵活性强,能有效监控 Windows 、Linux、VMware 和 Unix 主机状态,交换机、路由器等网络设置等。一旦主机或服务状态出现异常时,会发出邮件或短信报警第一时间通知 IT 运营人员,在状态恢复后发出正常的邮件或短信通知。OpenNMS
OpenNMS是一个网络管理应用平台,可以自动识别网络服务,事件管理与警报,性能测量等任务。Cacti
Cacti是一套基于PHP、MySQL、SNMP及RRDTool开发的网络流量监测图形分析工具。它通过snmpget来获取数据,使用 RRDtool绘画图形,它的界面非常漂亮,能让你根本无需明白rrdtool的参数能轻易的绘出漂亮的图形。而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结 构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,让你添加自己的snmp_query和script!功能非常强大完善,界面友好。Zenoss Core
一个基于Zope应用服务器的应用/服务器/网络管理平台,提供了Web管理界面,可监控可用性、配置、性能和各种事件。Zabbix
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。用于监控网络上的服务器/服务以及其他网络设备状态的网络管理系统,后台基于C,前台由PHP编写,可与多种数据库搭配使用。提供各种实时报警机制。Ganglia
Ganglia是一个针对高性能分布式系统(例如,集群、网格、云计算等)所设计的可扩展监控系统。该系统基于一个分层的体系结构,并能够支持2000个节点的集群。它允许用户能够远程监控系统的实时或历史统计数据,包括:CPU负载均衡、网络利用率等。Ganglia依赖于一个基于组播的监听/发布协议来监控集群的状态。Ganglia系统的实现综合了多种技术,包括:XML(数据描述)、XDR(紧凑便携式数据传输)、RRDtool(数据存储和可视化)等。
[b]数据监控和业务监控非常关键,及时发现问题,及时解决问题,监控系统主要包括:服务应用监控、主机监控、网络设备监控、网络连通性监控、网络访问质量监控、分布式系统监控、报警预设、监控图形化与历史数据等。[/b]
自动化对运维的意义
自动化就是运维为了减少重复枯燥的工作而建立的流程方法,而除此之外,自动化还能够带来减少人为错误、及时报警与故障恢复、提高业务可用性等好处。
运维工作自动化确实包含上述2个方面,归纳总结来其实就是:把零碎的工作集中化,把复杂的工作简单有序化,把流程规范化,最大化地解放生产力,也就是解放运维人员。自动化的技能/意识对于运维工作至关重要。运维工作不是简单的使用工具,这里面还有很多技巧和意识。具体的技巧/意识包括:[list=1][]如何驾驭这些琳琅满目的工具为己所用;[/][]如何根据不同的应用环境来选用不同的工具;[/][]如何根据应用来组合使用工具等等等等。[/]
一定要记住一点:工具只是利用帮助人进行运维的,这中间还需要人的干预和决策,工具不能完全代替全部运维工作。还需要结合实际业务逻辑和业务场景,就像架构一样,并不是淘宝、百度等大公司的架构,一定适合任何公司和业务。
自动化运维范畴
- []安装自动化[/][]部署自动化[/][]监控自动化[/][]发布自动化[/][]升级自动化[/][]安全管控自动化[/][]优化自动化[/][]数据备份自动化[/]
前阶段在自动化管理和安全方面的技术实现,比如说HP和IBM出品的一些ITIL和ITSM产品等,比如HP Openview,IBM Tivoli等等。这些工具都有Linux的版本,与其他同类工具相比的优势应该在于他们的商业应用成熟度,都是老品牌。现阶段有自动化的一些工具git、svn、Jenkins等等,一些开源的软件!
工具选择
针对不同规模的架构,一个小规模的网站,到百万量级、千万量级的网站,我们选择的工具就有不同。
在选择上对于百万量级、千万量级的网站,我们应该考虑选择成熟的工具、性能高的工具、熟悉的工具。而对于小规模的网站,我们应该考虑选择一些开源的、免费的工具。
这个原则就是以应用为导向,百万量级、千万量级的网站牵涉的面广、要求高,不成熟的工具往往很难说服领导和公司使用,所以主要是在成熟度方面。
自动化运维规划
自动化的实现不是单纯学习几个工具就能够做好的,甚至于规划不好的情况,自动化不仅没有节省人力,反而带来了更多的问题。所以运维人员在考虑自动化流程的过程中应该考虑如下几点原则:[list=1][]根据应用选择工具;[/][]对于关键应用,选择成熟度高的工具;[/][]不能过分依赖一种工具,需要进行对比和分析;[/][]对工具的特性做到精通;[/][]是人驾驭工具,人要监督工具,而不是工具来驾驭人;[/][]善于利用脚本实现定制化场景。[/]
[list=1][]经常逛逛一些不错的IT媒体网站和看看这方面的文章,可以多多涉猎和学习;[/][]针对公司业务场景,选择一些自动化工具,登陆到官网学习和熟悉工作原理;[/][]经常参加一些线下自动化运维的活动和媒体活动,多和一些自动化方面的大拿和资深人士交流。[/]自动化经验积累
新晋系统分析利器Sysdig
Geek小A 发表了文章 0 个评论 2845 次浏览 2016-01-01 19:19
安装
curl -s https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public | apt-key add -
curl -s -o /etc/apt/sources.list.d/draios.list http://download.draios.com/stable/deb/draios.list
apt-get update
apt-get -y install sysdig
常用操作
sysdig 有很多 chisel, chisel 意为 铲子, 可以理解为定位某类问题的工具, sysdig 采用 Lua 编写的。
- []查看 chisel 列表[/]
sysdig -cl
- []查看具体某个 chisel 的提示[/]
sysdig -i spy_logs
- []使用某个 chisel[/]
sysdig -c spy_logs
- []过滤器可以帮助我们从各种输出信息中, 筛选出我们需要的, 比如 [i]proc.name=foo , 如果你记住不了太多过滤器也无妨, 我们可以借助如下命令查看过滤器[/[/i]]
sysdig -l
- []记录定位信息到文本, 以及从文本读取信息[/]
sysdig -w tracefile.capsysdig -r tracefile.dump proc.name=sshd
实战
- []服务器上经常需要查看哪个服务带宽占用使用较高, 特别是被 DDOS 的时候。[/]
sudo sysdig -c topprocs_net
- []查看某个IP的通讯数据,并以ASCII 码输出[/]
sudo sysdig -s2000 -A -c echo_fds fd.cip=127.0.0.1
- []查看非请求 redis-server 的其他请求进程和句柄[/]
sudo sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=redis-server"
- []查看访问该服务器的所有 GET 请求数据[/]
sudo sysdig -s 2000 -A -c echo_fds fd.port=80 and evt.buffer contains GET
- []查看访问该服务器的 SQL 语句[/]
sudo sysdig -s 2000 -A -c echo_fds evt.buffer contains SELECT
- []查看磁盘读写最高的进程[/]
sysdig -c topprocs_file
- []查看延迟最大的系统调用[/]
sysdig -c topscalls_time
- []查看具体文件的操作细节[/]
sysdig -A -c echo_fds "fd.filename=syslog"
- []查看 IO 延迟大于 1ms 的文件[/]
sudo sysdig -c fileslower 1
- []监视某个文件是否被操作, 从安全出发想象空间很大哦[/]
sudo sysdig evt.type=open and fd.name contains /etc更多方法,详情查阅sysdig官网
负载均衡LVS原理和应用详解
push 发表了文章 1 个评论 4359 次浏览 2016-01-01 19:03
一、LB常用解决方案
1. 硬件负载均衡解决方案:
- []F5公司: BIG-IP[/][]Citrix公司: Netscaler[/][]A10公司: A10[/][]Array [/][]Redware[/]
1) CIP: Client ip
2) VIP: virtual ip
3) DIP: Director IP
4) RIP: Real server Ip
客户端请求,被VIP端口接收后,从DIP接口被转发出去,并转发至RIP
二、LVS类型
1. NAT(dNAT)
访问过程如下:
1) CIP访问VIP
2) VIP接收报文后,做dNAT,指向某一个RIP
3) RIP拿到接收到报文后进行回应
4) 此时需要,RIP网关指向DIP,也就是Director server. 否则若在互联网上,即便报文是可以回应给CIP客户端,但是由于CIP并没有请求RIP服务器,因此报文会被丢弃。
NAT特性:
1) RS应该使用私有地址
2) RS的网关必须指向DIP
3) RIP 和 DIP 必须在一同意网段内
4) 进出的报文,无论请求还是响应,都必须经过Director Server, 请求报文由DS完成目标地址转换,响应报文由DS完成源地址转换
5) 在高负载应用场景中,DS很可能成为系统性能瓶颈。
6) 支持端口映射。
7) 内部RS可以使用任意支持集群服务的任意操作系统。
2. DR
1)让前端路由将请求发往VIP时,只能是Dirctor上的VIP
禁止RS响应对VIP的ARP广播请求:
(1) 在前端路由上实现静态MAC地址VIP的绑定;
前提:得有路由器的配置权限;
缺点:Directory故障转时,无法更新此绑定;
(2) arptables
前提:在各RS在安装arptables程序,并编写arptables规则
缺点:依赖于独特功能的应用程序
(3) 修改Linux内核参数
前提:RS必须是Linux;
缺点:适用性差;
Linux的工作特性:IP地址是属于主机,而非某特定网卡;也就是说,主机上所有的网卡都会向外通告,需要先配置参数,然后配置IP,因为只要IP地址配置完成则开始想外通告mac地址为了使响应报文由配置有VIP的lo包装,使源地址为VIP,需要配置路由经过lo网卡的别名,最终由eth0发出
两个参数的取值含义:
arp_announce:定义通告模式
0: default, 只要主机接入网络,则自动通告所有为网卡mac地址
1: 尽力不通告非直接连入网络的网卡mac地址
2: 只通告直接进入网络的网卡mac地址
arp_ignore:定义收到arp请求的时响应模式
0: 只有arp 广播请求,马上响应,并且响应所有本机网卡的mac地址
1: 只响应,接受arp广播请求的网卡接口mac地址
2: 只响应,接受arp广播请求的网卡接口mac地址,并且需要请求广播与接口地址属于同一网段
3: 主机范围(Scope host)内生效的接口,不予响应,只响应全局生效与外网能通信的网卡接口
4-7: 保留位
8: 不响应一切arp广播请求
配置方法:
全部网卡
arp_ignore 1
arp_announce 2
同时再分别配置每个网卡,eth0和lo
arp_ignore 1
arp_annource 2
2) 特性
(1)RS是可以使用公网地址,此时可以直接通过互联网连入,配置,监控RS服务器
(2)RS的网不能指向DIP
(3)RS跟DS要在同一物理网络内,最好在一同一网段内
(4)请求报文经过Director但是相应报文不经过Director
(5)不支持端口映射
(6)RS可以使用,大多数的操作系统,至少要可以隐藏VIP
3. LVS TUN: IP隧道,IP报文中套IP报文
1)RIP,DIP,VIP都必须是公网地址
2)RS网关不会指向DIP
3)请求报文经过Director,但相应报文一定不经过Director
4)不支持端口映射
5)RS的OS必须得支持隧道功能
4. FULLNAT: 必须内核打补丁才能使用,使得各RS主机可以跨vlan. 源IP和目标IP都修改。
三、LVS调度算法
1. 静态方法:仅根据算法本身进行调度
rr: Round Robin
wrr: Weighted RR
sh: source hashing,源地址进行hash,然后分配到特定的服务器
dh: destination hashing
用于多前端防火墙的场景中,使得访问从一个防火墙进同时还从这个防火墙出来。
2. 动态方法:根据算法及RS当前的负载状况
lc: Least Connection
Overhead=Active*256+Inactive
结果中,最小者胜出;
wlc: Weighted LC
Overhead=(Active*256+Inactive)/weight
sed: Shortest Expect Delay
Overhead=(Active+1)*256/weight
nq: Nerver Queue,在Sed基础上,开局时候先轮寻一圈。
lblc: Locality-based Least Connection (基于本地的最小连接) dh+lc
lblcr: Replicated and Locality-based Least Connection 后端服务器是缓存服务器时, 可以绑定连接到某一缓存服务器中。
3. LVS缺陷:
不能检测后端服务器的健康状况,总是发送连接到后端。
Session持久机制:
1、session绑定:始终将同一个请求者的连接定向至同一个RS(第一次请求时仍由调度方法选择);没有容错能力,有损均衡效果;
2、session复制:在RS之间同步session,因此,每个RS持集群中所有的session;对于大规模集群环境不适用;
3、session服务器:利用单独部署的服务器来统一管理session;
四、ipvsadm使用方法
1.相关命令
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask]2. 集群服务相关
ipvsadm -D -t|u|f service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
-A: 添加一个集群服务3. RS相关
-t: tcp
-u: udp
-f: firewall mark,
通常用于将两个或以上的服务绑定为一个服务进行处理时使用
例如httpd和https
iptables mongo表一起使用
service-address:
-t IP:port
-u ip:port
-f firewall_mark
-s 调度方法,默认为wlc
-p timeout: persistent connection, 持久连接
-E 修改定义过的集群服务
-D -t|u|f service-address:删除指定的集群服务
-a:向指定的Cluster services中添加RS4. 清空所有的集群服务:
-t|-u|-f service-address:指明将RS添加至哪个Cluster Service中
-r: 指定RS,可包含{IP[:port]},只有支持端口映射的LVS类型才允许此处使用跟集群服务中不同的端口
LVS类型:
-g: Gateway模式,就是DR模型(默认)
-i: ipip模式,TUN模型
-m: masquerade地址伪装自动完成后半段的原地址转换,NAT
指定RS权重:
-w # 省略权重为1
-e: 修改指定的RS属性
-d -t|u|f service-address -r server-address:从指定的集群服务中删除某RS
-C5. 保存规则:(使用输出重定向)
ipvsadm-save6. 载入指定的规则:(使用输入重定向)
ipvsadm -S
ipvsadm-restore7. 查看ipvs规则等
ipvsadm -R
-L [options]
-n: 数字格式显示IP地址
-c: 显示连接数相关信息
--stats: 显示统计数据
--rate: 速率
--exact:显示统计数据的精确值
--timeout: 超时时间
-Z: 计数器清零
五、LVS NAT模型的实现
[list=1]
[*]集群环境: 一台Director, 两台后端Real Server RS1,RS2
Director: 两网卡 [/*]
[/list] eth0: 192.168.98.133/24
eth1: 172.25.136.10/24
eth0:1: 192.168.98.128/24 作为VIP地址
RS1:
eth0: 172.25.136.11
RS2:
eth0: 172.25.136.12;
Director的eth1和RS1,RS2的eth0在模拟在同一物理网络内,使用VMnet22. 为RS添加网关指向Director
物理机windows 7 作为客户端,在192.168.98.0网络内
RS1:3. 修改内核参数,开启转发功能
# ifconfig eth0 172.25.136.11/24
# route add default gw 172.25.136.10
RS2:
# ifconfig eth0 172.25.136.12/24
# route add default gw 172.25.136.10
添加完路由条目后,应该可以ping通Director 192.168.98.0网段的两个地址。
# echo 1 > /proc/sys/net/ipv4/ip_forward4. 在RS1和RS2上面创建测试页,并在Director验证服务
RS1上5. 在Director添加集群服务
# echo 'web from RS1' > /var/www/html/index.html
# service httpd start
RS2上
# echo 'web from RS2' > /var/www/html/index.html
# service httpd start
Director上验证
# curl 172.25.136.11
web from RS1
# curl 172.25.136.12
web from RS2
# ipvsadm -A -t 192.168.98.128:80 -s wlc6. 通过物理机浏览器访问192.168.98.128, 正常情况,就可以看到轮寻的两个RS的主页了。
# ipvsadm -a -t 192.168.98.128:80 -r 172.25.136.11:80 -m -w 1
# ipvsadm -a -t 192.168.98.128:80 -r 172.25.136.12:80 -m -w 3
访问几次后,查看统计数据如下,大概接入报文比例3:1, 说明wlc生效了
# ipvsadm -L --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 192.168.98.128:http 45 227 227 32215 19245
-> 136-11.priv25.nus.edu.sg:htt 12 62 62 8571 6055
-> 136-12.priv25.nus.edu.sg:htt 33 165 165 23644 13190
六、LVS DR模型,当DIP,VIP,RIP都为公网地址时(实验环境中,把这三个地址全部放在同一物理网络中)
[list=1]
[*]地址规划:
Director: [/*]2. 配置地址
[/list] eth0: 192.168.98.133 作为ssh通信地址
eth0:1: 192.168.98.128 作为VIP, 可以进行浮动
RS1:
eth0: 192.168.98.129/24 作为RIP1
lo:1 : 192.168.98.128 作为隐藏的VIP
RS1:
eth0: 192.168.98.130 作为RIP2
lo:2: 192.168.98.128 作为隐藏VIP
Director:3. 修改RS1,RS3的内核参数,关闭lo的arp通告和lo的arp响应,并配置隐藏地址
# ifconfig eth0 192.168.98.133/24 up
# ifconfig eth0:1 192.168.98.128/24 up
RS1
# ifconfig eth0 192.168.98.129/24 up
RS2
# ifconfig eth0 192.168.98.130/25 up
RS1:4. 为RS1和RS2添加路由条目,保证其发出报文经过eth0之前,还要先经过lo:1 VIP, 使得源地址成为VIP
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
设置RS1的隐藏VIP地址, 并禁止其向外发广播
# ifconfig lo:1 192.168.98.128 netmask 255.255.255.255 broadcast 192.168.98.128
RS2:
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
设置RS2的隐藏VIP地址,并禁止其向外发广播
# ifconfig lo:1 192.168.98.128 netmask 255.255.255.255 broadcast 192.168.98.128
RS1:5. 此时在Director上面添加,集群服务
# route add 192.168.98.128 dev lo:1
RS2:
# route add 192.168.98.128 dev lo:1
# ipvsadm -A -t 192.168.98.128:80 -s wlc
# ipvsadm -a -t 192.168.98.128:80 -r 192.168.98.129:80 -g -w 1
# ipvsadm -a -t 192.168.98.128:80 -r 192.168.98.130:80 -g -w 3
七、LVS持久连接
[list=1]
[*]PCC:将来自于同一个客户端发往VIP的所有请求统统定向至同一个RS
可以通过修改轮寻算法为sh算法实现[/*]2. PPC:将来自于一个客户端发往某VIP的某端口的所有请求统统定向至同一个RS;
[/list] # ipvsadm -E -t 192.168.98.128:80 -s sh
[root@www ~]# curl 192.168.98.128
eb from RS2
[root@www ~]# curl 192.168.98.128
web from RS2
[root@www ~]# curl 192.168.98.128
web from RS2
[root@www ~]# curl 192.168.98.128
web from RS2
[root@www ~]# curl 192.168.98.128
web from RS2
[root@www ~]# curl 192.168.98.128
web from RS2
[list=1]
[*]PFMC: 端口绑定,port affinity, 基于防火墙标记,将两个或以上的端口绑定为同一个服务
防火墙打标记[/*]转载阅读,原文地址:负载均衡LVS原理及其应用
[/list] # iptables -t mangle -A PREROUTING -d VIP -p tcp --dport CS_Port -j MARK --set-mark # (0-99)
定义集群服务:
# ipvsadm -A -f #(防火墙打的标记)
如何获取专业版PyCharm 5
Ansible 回复了问题 2 人关注 1 个回复 3657 次浏览 2016-01-01 13:33
Elasticsearch结合Nginx使用
push 发表了文章 0 个评论 9041 次浏览 2015-12-17 21:18
由于NGINX具有出色的性能非常高并发率,再加上负载平衡的HTTP流量功能,这是非常适合用作为您扩展到多个Elasticsearch服务器的反向代理负载均衡。
部署NGINX加上与Elasticsearch的优势
Elasticsearch有专为可扩展性的一些功能,但卸载请求开源NGINX产品或商业的负载均衡Nginx Plus产品,这更加具有企业级的功能,节省了资源Elasticsearch服务器上。
把NGINX或NGINX Plus加在一个Elasticsearch服务器的前端提供福利,如请求 日志记录,但真正的价值是当你扩展到多个Elasticsearch服务器。
这种架构除了记录每个API请求,NGINX加NGINX Plus还有如下优势:
- []支持大量的客户端连接,不管有没有启用keepalives,比长连接(使用keepalives)到elasticsearch服务器小的多[/][]负载均衡的请求Elasticsearch服务器[/][]缓存数据,减少同一内容再次请求Elasticsearch服务器。NGINX Plus 还提供HTTP API 对缓存数据的清除接口[/][]提供主动健康检测(仅nginx plus),不断检测后端Elasticsearch服务器是否正常,并主动的进行切换。[/][]报告丰富的监控指标(仅nginx plus),提供监控和管理。[/][]支持通过HTTP API动态的配置上游服务器组(仅nginx plus),可以从上游服务器组中添加和删除,上线或下线,改变权重。[/]
下表比较Elasticsearch 、Elasticsearch + nginx F/OSS、Elasticsearch + NGINX Plus 的功能:
当使用NGINX Plus高可用性主动或被动配置负载均衡的Elasticsearch 服务器集群时,Elasticsearch 客户端通过nginx plus请求,而不是直接连接到Elasticsearch服务器,这意味着,根据需要,而无需更新客户端,你可以任意的扩展Elasticsearch服务器。
部署NGINX Plus + Elasticsearch
部署NGINX Plus与Elasticsearch是非常简单的。在下面的示例NGINX Plus配置的指令定义负载均衡两台Elasticsearch服务器设置:
- []upstream - 负载均衡请求的是两台Elasticsearch服务器,地址分别是192.168.187.132和192.168.187.133的9200端口。[/][]proxy_cache_valid – 有效缓存有效时间10分钟[/][]health_check - 主动的健康监测、状态收集,把他们从负载平衡轮训的时候,把它们放下来,然后再将它们重新加入到轮训中中,再恢复健康。健康检查资料的匹配块,这不仅可以确保服务器返回200状态码,但检查的响应是JSON,它返回字符串预期Elasticsearch格式化,”状态“:200”。[/][]Final server block - 收集统计并监听8080端口的请求为status.html页面显示统计,或状态,它告诉nginx plus返回JSON格式的原始数据。[/]
proxy_cache_path /var/cache/nginx/cache keys_zone=elasticsearch:10m inactive=60m;
upstream elasticsearch_servers {
zone elasticsearch_servers 64K;
server 192.168.187.132:9200;
server 192.168.187.133:9200;
}
match statusok {
status 200;
header Content-Type ~ "application/json";
body ~ '"status" : 200';
}
server {
listen 9200;
status_zone elasticsearch;
location / {
proxy_pass http://elasticsearch_servers;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_cache elasticsearch;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
proxy_connect_timeout 5s;
proxy_read_timeout 10s;
health_check interval=5s fails=1 passes=1 uri=/ match=statusok;
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
access_log logs/es_access.log combined;
}
server {
listen 8080;
root /usr/share/nginx/html;
location / {
index status.html;
}
location =/status {
status;
}
}
总结
Elasticsearch是一个强大而灵活的搜索引擎,和NGINX Plus一个企业级的应用交付平台自然契合在一起,作为一个现代化的可扩展的网络架构的组件。 作为软件产品,他们提供的只要你安装这些相同的特性和功能:在裸机服务器,在虚拟机中,在云中,或在容器中。
进一步阅读
Playing HTTP Tricks with Nginx
Securing Elasticsearch with Nginx
分享英文原文:https://www.nginx.com/blog/nginx-elasticsearch-better-together/
Nginx访问日志格式设置
push 发表了文章 0 个评论 2950 次浏览 2015-12-17 17:16
Example:
#WebLoglog_format指令:
log_format weblog '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log /data/logs/domain_access.log access;
error_log /data/logs/domain_error.log error;
-------------------------------------参数说明:
语法 log_format name string ...
-------------------------------------
默认值 combined "..."
-------------------------------------
使用字段 http
-------------------------------------
- []$remote_addr 和 $http_x_forwarded_for:记录客户端的ip地址。[/][]$remote_user:记录客户端用户名称。[/][]$time_local:记录访问时间与时区。[/][]$request:记录请求的URL与HTTP协议。[/][]$status:记录请求状态;成功是200。[/][]$body_bytes_sent:记录发送给客户端文件主体内容大小。[/][]$http_referer:记录从那个页面链接访问过来的。[/][]$http_user_agent:记录客户端浏览器的相关信息。[/]
access_log指令:
--------------------------------------------------------记录的日志格式如下:
语法 access_log path [ format [ buffer = size ]]
access_log off
--------------------------------------------------------
默认值 logs/access.log combined
--------------------------------------------------------
使用字段 http
server
location
if in location
limit_except
---------------------------------------------------------
66.249.73.68 - - [17/Dec/2015:17:03:52 +0800] "GET /2011/11/1659.html HTTP/1.1" 200 9028 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
115.28.133.87 - - [17/Dec/2012:17:03:53 +0800] "GET /2012/03/8907.html HTTP/1.1" 200 8044 "http://www.baidu.com/s?wd=web%20equation&ie=utf-8" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)"
115.28.133.87 - - [17/Dec/2012:17:03:54 +0800] "GET /favicon.ico HTTP/1.1" 200 1150 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; 360SE)"