通知设置 新通知
Elasticsearch介绍
大数据 OpenSkill 发表了文章 0 个评论 2718 次浏览 2015-07-08 22:27
Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。
但是,Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。
Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
不过,Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它:
[]分布式的实时文件存储,每个字段都被索引并可被搜索[/]
[]分布式的实时分析搜索引擎[/]
[]可以扩展到上百台服务器,处理PB级结构化或非结构化数据[/]
而且,所有的这些功能被集成到一个服务里面,你的应用可以通过简单的RESTful API、各种语言的客户端甚至命令行与之交互。
上手Elasticsearch非常容易。它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引擎理论。安装即可使用,只需很少的学习既可在生产环境中使用。
Elasticsearch在Apache 2 license下许可使用,可以免费下载、使用和修改。
随着你对Elasticsearch的理解加深,你可以根据不同的问题领域定制Elasticsearch的高级特性,这一切都是可配置的,并且配置非常灵活。
ES诞生模糊记忆:
多年前,一个叫做Shay Banon的刚结婚不久的失业开发者,由于妻子要去伦敦学习厨师,他便跟着也去了。在他找工作的过程中,为了给妻子构建一个食谱的搜索引擎,他开始构建一个早期版本的Lucene。
直接基于Lucene工作会比较困难,所以Shay开始抽象Lucene代码以便Java程序员可以在应用中添加搜索功能。他发布了他的第一个开源项目,叫做“Compass”。
后来Shay找到一份工作,这份工作处在高性能和内存数据网格的分布式环境中,因此高性能的、实时的、分布式的搜索引擎也是理所当然需要的。然后他决定重写Compass库使其成为一个独立的服务叫做Elasticsearch。
第一个公开版本出现在2010年2月,在那之后Elasticsearch已经成为Github上最受欢迎的项目之一,代码贡献者超过300人。一家主营Elasticsearch的公司就此成立,他们一边提供商业支持一边开发新功能,不过Elasticsearch将永远开源且对所有人可用。
Shay的妻子依旧等待着她的食谱搜索……
未披露的0day高危漏洞,再一次心脏滴血OpenSSl
科技前沿 Ansible 发表了文章 0 个评论 3912 次浏览 2015-07-08 18:29
OpenSSL官方发布漏洞预警,提醒系统管理员做好OpenSSL的升级准备。最新版本OpenSSL将于7月9日(本周四)发布,修复了一个未经披露的高危漏洞。不少安全专家推测,这个高危漏洞将可能是另一个心脏滴血
神秘的高危0day漏洞
OpenSSL是一个广泛使用的开源软件库,它使用SSL和TLS为大多数网站提供加密的互联网连接。
OpenSSL项目团队在本周一宣布,即将发布的OpenSSL加密库新版本1.0.2d和1.0.1p中解决了一个被定位于“高危”的安全漏洞。
关于这个神秘的安全漏洞,除了知道它并不影响1.0.0或0.9.8版本之外,目前还没有更详细的消息。在前天公开的一封邮件列表中,开发者Mark J Cox陈述道:
“OpenSSL项目团队宣布即将发布OpenSSL新版本1.0.2d和1.0.1p,这两个新版本将于7月9日发布。值得注意的是,这两个新版本中都修复了一个安全等级评定为“高危”的漏洞。不过,这个漏洞并不影响1.0.0或0.9.8版本。”OpenSSL官方在发布新版本前发出预警,很可能是为了防止在更新补丁发布给大众之前,黑客利用该漏洞进行攻击。
不少安全专家推测,这个高危漏洞将可能是另一个心脏滴血(Heartbleed)漏洞或POODLE漏洞,而这两者曾被认为是最糟糕的TLS/SSL漏洞,直到今天人们认为它们仍然在影响互联网上的网站。
OpenSSL高危漏洞回顾
心脏滴血漏洞:该漏洞去年4月份被发现,它存在于OpenSSL早期版本中,允许黑客读取受害者加密数据的敏感内容,包括信用卡详细信息,甚至能够窃取网络服务器或客户端软件的加密SSL密钥。
POODLE漏洞:几个月后,在古老但广泛应用的SSL 3.0加密协议中发现了另一个被称为POODLE(Padding Oracle On Downgraded Legacy Encryption)的严重漏洞,该漏洞允许攻击者解密加密连接的内容。
OpenSSL在今年3月份的一次更新中修复了一批高严重性的漏洞,其中包括拒绝服务漏洞(CVE-2015-0291),它允许攻击者攻击在线服务并使其崩溃;此外还有FREAK漏洞(CVE-2015-0204),它允许攻击者迫使客户端使用弱加密方式。
转载出自
Libvirt的三种CPU配置模式
DevOps Ansible 发表了文章 0 个评论 8750 次浏览 2015-07-07 23:22
CPU配置模式可以有以下几种模式
1. custom模式
<cpu mode='custom' match='exact'>
<modelfallback='allow'>kvm64</model>
...
<featurepolicy='require' name='monitor'/>
</cpu>
2. host-model 模式
根据物理CPU的特性,选择一个最靠近的标准CPU型号,如果没有指定CPU模式,默认也是使用这种模式,xml配置文件为:
<cpu mode='host-model' />
3. host-passthrough 模式
直接将物理CPU 暴露给虚拟机使用,在虚拟机上完全可以看到的就是物理CPU的型号,xml配置文件为:
<cpu mode='host-passthrough'/>
使用host-model看到的VCPU:
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 44
model name : WestmereE56xx/L56xx/X56xx (Nehalem-C)
...
使用host-passthrough看到的VCPU:
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 44
model name : Intel(R)Xeon(R) CPU X5650 @ 2.67GHz
可以看到,使用host-model模式,Libvir会根据物理CPU的型号,从规定的CPU中选择一种最接近的CPU型号,而使用host-passthrough模式直接看到的就物理CPU的型号。
Linux系统安装后的基础优化-基于CentOS(5.8/6.4)
运维 OpenSkill 发表了文章 0 个评论 2454 次浏览 2015-07-04 21:58
在运维工作中,我们发现Linux系统安装之后并不能立即投入生产环境使用,往往需要先经过我们运维人员的优化才行。
下面我就为大家简单讲解几点关于Linux系统安装后的基础优化操作。
注意:本次优化都是基于CentOS(5.8/6.4)。关于5.8和6.4两者优化时的小区别,我会在文中提及的。
优化条目:
修改ip地址、网关、主机名、DNS等
关闭selinux,清空iptables
添加普通用户并进行sudo授权管理
更新yum源及必要软件安装
定时自动更新服务器时间
精简开机自启动服务
定时自动清理/var/spool/clientmqueue/目录垃圾文件,防止inode节点被占满
变更默认的ssh服务端口,禁止root用户远程连接
锁定关键文件系统
调整文件描述符大小
调整字符集,使其支持中文
去除系统及内核版本登录前的屏幕显示
内核参数优化
1、修改ip地址、网关、主机名、DNS等
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 #网卡名字
BOOTPROTO=static #静态IP地址获取状态 如:DHCP表示自动获取IP地址
IPADDR=192.168.1.113 #IP地址
NETMASK=255.255.255.0 #子网掩码
ONBOOT=yes #引导时是否激活
GATEWAY=192.168.1.1
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.113
NETMASK=255.255.255.0
ONBOOT=yes
GATEWAY=192.168.1.1
[root@localhost ~]# vi /etc/sysconfig/network
HOSTNAME=c64 #修改主机名,重启生效
GATEWAY=192.168.1.1 #修改默认网关,如果上面eth0里面不配置网关的话,默认就使用这里的网关了。
[root@localhost ~]# cat /etc/sysconfig/network
HOSTNAME=c64
GATEWAY=192.168.1.1
我们也可以用 hostname c64 来临时修改主机名,重新登录生效
[root@localhost ~]# vi /etc/resolv.conf #修改DNS信息
nameserver 114.114.114.114
nameserver 8.8.8.8
[root@localhost ~]# cat /etc/resolv.conf #查看修改后的DNS信息
nameserver 114.114.114.114
nameserver 202.106.0.20
[root@localhost ~]# service network restart #重启网卡,生效
重启网卡,也可以用下面的命令
[root@localhost ~]# /etc/init.d/network restart
2、关闭selinux,清空iptables
关闭selinux
[root@c64 ~]# sed –i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config #修改配置文件则永久生效,但是必须要重启系统。
[root@c64 ~]# grep SELINUX=disabled /etc/selinux/config
SELINUX=disabled #查看更改后的结果
[root@c64 ~]# setenforce 0 #临时生效命令
[root@c64 ~]# getenforce #查看selinux当前状态
Permissive
清空iptables
[root@c64 ~]# iptables –F #清理防火墙规则
[root@c64 ~]# iptables –L #查看防火墙规则
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@c64 ~]#/etc/init.d/iptables save #保存防火墙配置信息
[root@c64 ~]#service iptables off #开机不自动启动
3、添加普通用户并进行sudo授权管理
[root@c64 ~]# useradd sunsky
[root@c64 ~]# echo "123456"|passwd --stdin sunsky && history –c
[root@c64 ~]# visudo
在root ALL=(ALL) ALL 此行下,添加如下内容
sunsky ALL=(ALL) ALL
4、更新yum源及必要软件安装
yum安装软件,默认获取rpm包的途径从国外官方源,改成国内的源。
国内较快的两个站点:搜狐镜像站点 、网易镜像站点
法1:自己配置好安装源配置文件,然后上传到linux。
法2:使用镜像站点配置好的yum安装源配置文件
[root@c64 ~]# cd /etc/yum.repos.d/
[root@c64 yum.repos.d]# /bin/mv CentOS-Base.repo CentOS-Base.repo.bak
[root@c64 yum.repos.d]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
接下来执行如下命令,检测yum是否正常
[root@c64 yum.repos.d]# yum clean all #清空yum缓存
[root@c64 yum.repos.d]# yum makecache #建立yum缓存
然后使用如下命令将系统更新到最新
[root@c64 yum.repos.d]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY* #导入签名KEY到RPM
[root@c64 yum.repos.d]# yum upgrade -y #更新系统内核到最新
接下来就要安装几个必要的软件了
[root@c64 yum.repos.d]# yum install lrzsz ntpdate sysstat -y
lrzsz是一个上传下载的软件
ntpdate是用来与远程时间服务器进行时间更新的软件
sysstat是用来检测系统性能及效率的工具
5、定时自动更新服务器时间
提示:CentOS 6.4的时间同步命令路径不一样, 6是/usr/sbin/ntpdate, 5是/sbin/ntpdate
扩展:在机器数量少时,以上定时任务同步时间就可以了。如果机器数量大时,可以在网内另外部署一台时间同步服务器NTP Server。此处仅提及,不做部署。
时间同步服务器架构图:
6、精简开机自启动服务
刚装完操作系统可以只保留crond,network,syslog,sshd这四个服务。(Centos6.4为rsyslog)
[root@c64 ~]# for sun in `chkconfig --list|grep 3:on|awk '{print $1}'`;do chkconfig --level 3 $sun off;done
[root@c64 ~]# for sun in crond rsyslog sshd network;do chkconfig --level 3 $sun on;done
[root@c64 ~]# chkconfig --list|grep 3:on
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
7、定时自动清理/var/spool/clientmqueue/目录垃圾文件,防止inode节点被占满
本优化点,在6.4上可以忽略不需要操作即可!
[root@c64 ~]# mkdir /server/scripts -p
[root@c64 ~]# vi /server/scripts/spool_clean.sh
#!/bin/sh
find /var/spool/clientmqueue/ -type f -mtime +30|xargs rm -f
然后将其加入到crontab定时任务中
[root@c64 ~]# echo '/30 * /bin/sh /server/scripts/spool_clean.sh >/dev/null 2>&1' >>/var/spool/cron/root
8、变更默认的ssh服务端口,禁止root用户远程连接
[root@c64 ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
[root@c64 ~]# vim /etc/ssh/sshd_config
Port 52113 #ssh连接默认的端口
PermitRootLogin no #root用户黑客都知道,禁止它远程登录
PermitEmptyPasswords no #禁止空密码登录
UseDNS no #不使用DNS
[root@c64 ~]# /etc/init.d/sshd reload #从新加载配置
[root@c64 ~]# netstat -lnt #查看端口信息
[root@c64 ~]# lsof -i tcp:52113
9、锁定关键文件系统
[root@c64 ~]# chattr +i /etc/passwd
[root@c64 ~]# chattr +i /etc/inittab
[root@c64 ~]# chattr +i /etc/group
[root@c64 ~]# chattr +i /etc/shadow
[root@c64 ~]# chattr +i /etc/gshadow
使用chattr命令后,为了安全我们需要将其改名
[root@c64 ~]# /bin/mv /usr/bin/chattr /usr/bin/任意名称
10、调整文件描述符大小
[root@localhost ~]# ulimit –n #查看文件描述符大小
1024
[root@localhost ~]# echo '* - nofile 65535' >> /etc/security/limits.conf
配置完成后,重新登录即可查看。
提示:也可以把ulimit -SHn 65535命令加入到/etc/rc.local,然后每次重启生效
[root@c64 ~]# cat >>/etc/rc.local<<EOF
#open files
ulimit -HSn 65535
#stack size
ulimit -s 65535
EOF
扩展:文件描述符
文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于Unix、Linux这样的操作系统。
习惯上,标准输入(standard input)的文件描述符是 0,标准输出(standard output)是 1,标准错误(standard error)是 2。尽管这种习惯并非Unix内核的特性,但是因为一些 shell 和很多应用程序都使用这种习惯,因此,如果内核不遵循这种习惯的话,很多应用程序将不能使用。
11、调整字符集,使其支持中文
sed -i 's#LANG="en_US.UTF-8"#LANG="zh_CN.GB18030"#' /etc/sysconfig/i18n
source /etc/sysconfig/i18n
扩展:什么是字符集?
简单的说就是一套文字符号及其编码。常用的字符集有:
GBK 定长双字节不是国际标准,支持系统不少
UTF-8 非定长 1-4字节广泛支持,MYSQL也使用UTF-8
12、去除系统及内核版本登录前的屏幕显示
[root@c64 ~]# >/etc/redhat-release
[root@c64 ~]# >/etc/issue
13、内核参数优化
说明:本优化适合apache,nginx,squid多种等web应用,特殊的业务也可能需要略作调整。
[root@c64 ~]# vi /etc/sysctl.conf
#by sun in 20131001
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time =600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
#一下参数是对iptables防火墙的优化,防火墙不开会有提示,可以忽略不理。
net.ipv4.ip_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120
[root@localhost ~]# sysctl –p #使配置文件生效
提示:由于CentOS6.X系统中的模块名不是ip_conntrack,而是nf_conntrack,所以在/etc/sysctl.conf优化时,需要把net.ipv4.netfilter.ip_conntrack_max 这种老的参数,改成net.netfilter.nf_conntrack_max这样才可以。
即对防火墙的优化,在5.8上是:
net.ipv4.ip_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120
在6.4上是
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
- 5.8版本:
这个错误可能是你的防火墙没有开启或者自动处理可载入的模块ip_conntrack没有自动载入,解决办法有二,一是开启防火墙,二是自动处理开载入的模块ip_conntrackerror: "net.ipv4.ip_conntrack_max" is an unknown key
error: "net.ipv4.netfilter.ip_conntrack_max" is an unknown key
error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_established" is an unknown key
error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait" is an unknown key
error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait" is an unknown key
error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait" is an unknown key
modprobe ip_conntrack
echo "modprobe ip_conntrack" >> /etc/rc.local
- 6.4版本上
这个错误可能是你的防火墙没有开启或者自动处理可载入的模块ip_conntrack没有自动载入,解决办法有二,一是开启防火墙,二是自动处理开载入的模块ip_conntrackerror: "net.nf_conntrack_max" is an unknown key
error: "net.netfilter.nf_conntrack_max" is an unknown key
error: "net.netfilter.nf_conntrack_tcp_timeout_established" is an unknown key
error: "net.netfilter.nf_conntrack_tcp_timeout_time_wait" is an unknown key
error: "net.netfilter.nf_conntrack_tcp_timeout_close_wait" is an unknown key
error: "net.netfilter.nf_conntrack_tcp_timeout_fin_wait" is an unknown key
modprobe nf_conntrack
echo "modprobe nf_conntrack" >> /etc/rc.local
- 6.4版本上
这个错误是由于自动处理可载入的模块bridge没有自动载入,解决办法是自动处理开载入的模块ip_conntrackerror: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
error: "net.bridge.bridge-nf-call-iptables" is an unknown key
error: "net.bridge.bridge-nf-call-arptables" is an unknown key
modprobe bridge
echo "modprobe bridge" >> /etc/rc.local