devops工具大全

Geek小A 发表了文章 0 个评论 12231 次浏览 2015-10-27 01:12 来自相关话题

包&产品管理 []Chocolatey:Chocolatey是Windows下一款开源的命令行包管理软件 ,简单说这相当于Windows的apt-get;[/][]FPM:全称 ...查看全部
dev-ops.jpg


包&产品管理


dops1.png

    []Chocolatey:Chocolatey是Windows下一款开源的命令行包管理软件 ,简单说这相当于Windows的apt-get;[/][]FPM:全称是Effing package management,他就是个软件包管理器,极大的缓解了多个平台构建软件包(deb,rpm,等)的痛苦;[/][]Herd:是一个基于Twitter Murder的文件分布系统;[/][]Vagrant Cachier:Vagrant的一个插件,用于缓存包方面的管理;[/][]WiX Toolset:提供一组最强大的工具集来帮助你创建Windows安装包。该工具集从XML源代码构建你的Windows安装程序包,可以无缝集成到构建过程;[/][]Boxstarter:利用Chocolatey包管理工具来自动化安装软件和创建可重复、脚本化的Windows环境;[/][]Elita:Elita是一个利用git和salt进行持续部署(部署作为服务)和API-driven基础设施的引擎/框架;[/][]Fig:主要用来跟Docker一起来实现的快速隔离的开发环境;[/][]Pulp:Pulp是一个用来管理软件库以及相关内容的平台;[/][]Veewee:Veewee是一个开源工具,用来创建和配置轻量级、可再生、便捷式虚拟机环境。[/]
 

日志记录&监控

dops2.png
    []AmonOne:现代化的自托管服务器监控工具;[/][]Anthracite:一个事件/日志改变/管理应用程序;[/][]collectd3:是一个可视化的collectd系统性能统计工具;[/][]collectd:是一个守护(daemon)进程,用来收集系统性能和提供各种存储方式来存储不同值的机制;[/][]Cronitor:监控cron工作,守护进程,和其他的一切;[/][]Datascope:可视化使用pg_stat_statements postgresql查询性能;[/][]Diamond:是一个基于Python的守护程序,主要用来收集系统指标,并且把它们发布到Graphite(或其它)工具中;[/][]Errbit:是一个用于收集和管理程序错误的开源工具;[/][]FnordMetric:是一个基于redis/ruby的实时事件跟踪应用,是个收集和可视化时间序列数据的框架,用户可以在几分钟内创建漂亮的实时分析仪表盘;[/][]Ganglia:Ganglia是一个跨平台可扩展的、高性能计算系统下的分布式监控系统,如集群和网格;[/]
其他:
dops3.png
dops4.png

云&PAAS环境

dops5.png

进程管理

dops6.png
    []Bouncy:可以作为HTTP路由主机;[/][]Supervisor:是一个客户端服务器系统,允许用户监控和控制类Unix操作系统上的进程数;[/][]God:由Ruby实现的进程监控框架。[/][]bluepill:bluepill[/]

服务发现

dops7.png
    []Consul:简化了分布式环境中的服务的注册和发现流程,通过HTTP或者DNS接口发现。支持外部SaaS 提供者等;[/][]etcd:是一个高可用的Key/Value存储系统,主要用于分享配置和服务发现;[/][]Apache ZooKeeper:是Apache Hadoop的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题;[/][]Weave:创建一个虚拟网络并连接到部署在多个主机上的Docker容器。[/]

源代码管理

dops8.png

持续集成和交付

dops9.png
    []Buildbot:是一个系统的自动化编译/测试周期最需要的软件,以验证代码的变化。通过自动重建和测试每次发生了变化的东西,在建设迅速查明之前,减少不必要的失败;[/][]Cabot:是一个开源,自我托管的监控工具;[/][]Jenkins:是基于Java开发的一种持续集成工具,用于监控持续重复的工作;[/][]Hubot:基于脚本具有很高的灵活性,任何人都可以编写自己的脚本来扩展基本功能;[/][]Hudson:是一个可扩展的持续集成引擎,主要用于:持续、自动地构建/测试软件项目、监控一些定时执行的任务;[/][]CruiseControl.rb:是一个持续集成服务器,它可以让团队里的每个人随时了解项目的健康状况和进度;[/][]OpsBot:是一个开源的、可插入的改善通信的机器人。[/]


配置管理


dops10.png


希望大家有收获,查看原文可以获取到更多了解,原文中列表会持续更新。
翻译原文地址:https://dev-ops-tools.zeef.com/richard.kraayenhagen#block_41685_process-management


nginx rewrite规则怎么写

空心菜 回复了问题 2 人关注 1 个回复 4239 次浏览 2015-10-26 00:01 来自相关话题

Centos6.4安装heartbeat3.0详解

Geek小A 发表了文章 0 个评论 2810 次浏览 2015-10-24 17:14 来自相关话题

#此文档其实可以当成脚本,只要把软件下载到相应的目录即可 在这里软件是放在/soft #此实验软件下载地址:http://pan.baidu.com/share/link?shareid=600042051&uk=823269712 # ...查看全部
#此文档其实可以当成脚本,只要把软件下载到相应的目录即可 在这里软件是放在/soft
#此实验软件下载地址:http://pan.baidu.com/share/link?shareid=600042051&uk=823269712
#环境说明:
#系统: Centos6.4 系统采用基本安装
node1(主服务器):eth0:192.168.1.6(node1)eth1:10.0.9.103(priv1)
node2(从服务器):eth0:192.168.1.8(node2)eth1:10.0.9.121(priv2)
VIP地址:192.168.1.100
#新建用户
groupadd haclient
useradd -g haclient hacluster
#定义变量
cat << EOF >> /root/.bash_profile
export PREFIX=/usr/local/ha
export LCRSODIR=$PREFIX/libexec/lcrso
export CLUSTER_USER=hacluster
export CLUSTER_GROUP=haclient
export CFLAGS="$CFLAGS -I$PREFIX/include -L$PREFIX/lib"
getent group ${CLUSTER_GROUP} >/dev/null || groupadd -r ${CLUSTER_GROUP}
getent passwd ${CLUSTER_USER} >/dev/null || useradd -r -g ${CLUSTER_GROUP} -d /var/lib/heartbeat/cores/hacluster -s /sbin/nologin -c "cluster user" ${CLUSTER_USER}
EOF
#安装前,yum安装缺的包
yum install -y glib2-devel bzip2-devel libxml2 libxml2-devel libtool-ltdl-devel buuid-devel automake autoconf docbook-style-xsl libxslt-devel gettext libaio-devel resource-agents
#安装各个模块软件包
#安装Cluster Glue
#这个放软件的目录 /soft
cd /soft
tar zxf Reusable-Cluster-Components-glue--02bdcf58f9a0.tar.gz
cd Reusable-Cluster-Components-glue--02bdcf58f9a0
./autogen.sh
./configure --prefix=$PREFIX --with-daemon-user=${CLUSTER_USER} --with-daemon-group=${CLUSTER_GROUP} --enable-fatal-warnings=no LIBS=/lib/libuuid.so.1
#注意:如果你是64位系统将LIBS=/lib64/libuuid.so.1 强烈建议安装下面3个软件业要指定一下,不然也会报错
make && make install
#安装Resource Agents
cd /soft
tar zxf resource-agents-3.9.5.tar.gz
cd resource-agents-3.9.5
./autogen.sh
./configure --prefix=$PREFIX --enable-fatal-warnings=no LIBS=/lib/libuuid.so.1
make && make install
#安装heartbeat
cd /soft
tar zxf Heartbeat-3-0-545554f6fc0a.tar.gz
cd Heartbeat-3-0-545554f6fc0a
./bootstrap
./configure --prefix=$PREFIX --enable-fatal-warnings=no
make && make install
#安装pacemaker
cd /soft
tar jxf Pacemaker-1-0-c3869c00c759.tar.bz2
cd Pacemaker-1-0-c3869c00c759
./autogen.sh
./configure --prefix=$PREFIX --with-lcrso-dir=$LCRSODIR --enable-fatal-warnings=no LIBS=/lib/libuuid.so.1
make && make install
##########################[size=16]#报错信息[/size]######################[size=16]#[/size]
You must have autoconf installed to compile the cluster-glue package.
Download the appropriate package for your system,
or get the source tarball at: ftp://ftp.gnu.org/pub/gnu/autoconf/
解决方法:
yum install automake
Download the appropriate package for your system,
or get the source tarball at: ftp://ftp.gnu.org/pub/gnu/automake/
解决方法:
yum install autoconf
You must have libtool installed to compile the cluster-glue package.
Download the appropriate package for your system,
or get the source tarball at: ftp://ftp.gnu.org/pub/gnu/libtool/
解决方法:
yum install libtool
./configure时出现configure: error: BZ2 libraries not found
解决办法:yum -y install bzip2-devel glib2-devel
make的时候
安装Reusable-Cluster-Components-glue--glue-1.0.9
./.libs/libplumb.so: undefined reference to `uuid_parse’
./.libs/libplumb.so: undefined reference to `uuid_generate’
./.libs/libplumb.so: undefined reference to `uuid_copy’
./.libs/libplumb.so: undefined reference to `uuid_is_null’
./.libs/libplumb.so: undefined reference to `uuid_unparse’
./.libs/libplumb.so: undefined reference to `uuid_clear’
./.libs/libplumb.so: undefined reference to `uuid_compare’
collect2: ld returned 1 exit status
gmake[2]: *** [ipctest] Error 1
gmake[2]: Leaving directory `/root/Reusable-Cluster-Components-glue-1.0.6/lib/clplumbing’
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/root/Reusable-Cluster-Components-glue-1.0.6/lib’
make: *** [all-recursive] Error 1
解决办法:
./configure --prefix=$PREFIX --with-daemon-user=${CLUSTER_USER} --with-daemon-group=${CLUSTER_GROUP} --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
各位在./configure的时候指定一下LIBS,如果是32位系统的话改成LIBS='/lib/libuuid.so.1'。下面ClusterLabs-resource Heartbeat在./configure的时候都指定一下,要不然继续报错。
解决办法:yum install e2fsprogs-devel libuuid-devel
make的时候报错
/usr/bin/xsltproc \
--xinclude \
http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl hb_report.xml
error : Operation in progress
warning: failed to load external entity "http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"
cannot parse http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl
gmake[2]: *** [hb_report.8] Error 4
gmake[2]: Leaving directory `/heartbeat/Reusable-Cluster-Components-glue--5e06b2ddd24b/doc'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/heartbeat/Reusable-Cluster-Components-glue--5e06b2ddd24b/doc'
make: *** [all-recursive] Error 1
解决方法:
yum -y install docbook-style-xsl
查看日志发现错误
grep -i error /var/log/ha-log
Sep 14 19:33:38 node1 pengine: [29617]: ERROR: unpack_resources: Resource start-up disabled since no STONITH resources have been defined
Sep 14 19:33:38 node1 pengine: [29617]: ERROR: unpack_resources: Either configure some or disable STONITH with the stonith-enabled option
Sep 14 19:33:38 node1 pengine: [29617]: ERROR: unpack_resources: NOTE: Clusters with shared data need STONITH to ensure data integrity
Sep 14 19:33:45 node1 pengine: [29617]: info: process_pe_message: Configuration ERRORs found during PE processing. Please run "crm_verify -L" to identify issues.
解决方法:STONITH默认是开启的,而我们做实验的时候是没有这个设备,所以要关闭它
STONTIH设备详解请参考:http://czmmiao.iteye.com/blog/1174667
关闭方法是:
[root@localhost ~]# /usr/local/ha/sbin/crm
abort: couldn't find crm libraries in [/usr/local/ha/sbin /usr/lib/python26.zip /usr/lib/python2.6 /usr/lib/python2.6/plat-linux2 /usr/lib/python2.6/lib-tk /usr/lib/python2.6/lib-old /usr/lib/python2.6/lib-dynload /usr/lib/python2.6/site-packages /usr/lib/python2.6/site-packages/gtk-2.0 /usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info]
(check your install and PYTHONPATH)
解决方法:
vim .bash_profile
然后添加以下内容
export PYTHONHONME=/usr/local/ha
export PYTHONPATH=$PYTHONHOME:/usr/local/ha/lib/python2.6/site-packages
export PATH=$PATH:/usr/local/ha/sbin
最后执行 source .bash_profile
[root@node1 ~]# vim /etc/hosts  添加以下内容
192.168.1.6 node1
192.168.1.8 node2
10.0.9.103 priv1
10.0.9.121 priv2
拷贝配置文件
[root@node1 ~]# cp /usr/local/ha/share/doc/heartbeat/ha.cf /usr/local/ha/etc/ha.d/
[root@node1 ~]# cp /usr/local/ha/share/doc/heartbeat/haresources /usr/local/ha/etc/ha.d
[root@node1 ~]# cp /usr/local/ha/share/doc/heartbeat/authkeys /usr/local/ha/etc/ha.d/
ha.cf配置文件部分参数详解:
logfile /var/log/ha-log
#指名heartbaet的日志存放位置
keepalive 2
#指定心跳使用间隔时间为2秒(即每两秒钟在eth1上发送一次广播)
deadtime 30
#指定备用节点在30秒内没有收到主节点的心跳信号后,则立即接管主节点的服务资源
warntime 10
#指定心跳延迟的时间为十秒。当10秒钟内备份节点不能接收到主节点的心跳信号时,就会往日志中写入一个警告日志,但此时不会切换服务
initdead 120
#在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍。

udpport 694
#设置广播通信使用的端口,694为默认使用的端口号。
baud 19200
#设置串行通信的波特率

bcast eth0 # Linux 指明心跳使用以太网广播方式,并且是在eth0接口上进行广播。
#mcast eth0 225.0.0.1 694 1 0
#采用网卡eth0的Udp多播来组织心跳,一般在备用节点不止一台时使用。Bcast、ucast和mcast分别代表广播、单播和多播,是组织心跳的三种方式,任选其一即可。
#ucast eth0 192.168.1.2
#采用网卡eth0的udp单播来组织心跳,后面跟的IP地址应为双机对方的IP地址
auto_failback on
#用来定义当主节点恢复后,是否将服务自动切回,heartbeat的两台主机分别为主节点和备份节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给备份节点并由备份节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代备份节点,如果该选项设置为off,那么当主节点恢复后,将变为备份节点,而原来的备份节点成为主节点
#stonith baytech /etc/ha.d/conf/stonith.baytech
# stonith的主要作用是使出现问题的节点从集群环境中脱离,进而释放集群资源,避免两个节点争用一个资源的情形发生。保证共享数据的安全性和完整性。
#watchdog /dev/watchdog
#该选项是可选配置,是通过Heartbeat来监控系统的运行状态。使用该特性,需要在内核中载入"softdog"内核模块,用来生成实际的设备文件,如果系统中没有这个内核模块,就需要指定此模块,重新编译内核。编译完成输入"insmod softdog"加载该模块。然后输入"grep misc /proc/devices"(应为10),输入"cat /proc/misc |grep watchdog"(应为130)。最后,生成设备文件:"mknod /dev/watchdog c 10 130" 。即可使用此功能
node node1 #主节点主机名,可以通过命令“uanme –n”查看。
node node2 #备用节点主机名
ping 192.168.12.237
#选择ping的节点,ping 节点选择的越好,HA集群就越强壮,可以选择固定的路由器作为ping节点,但是最好不要选择集群中的成员作为ping节点,ping节点仅仅用来测试网络连接
ping_group group1 192.168.12.120 192.168.12.237
#类似于ping ping一组ip地址
apiauth pingd gid=haclient uid=hacluster
respawn hacluster /usr/local/ha/lib/heartbeat/pingd -m 100 -d 5s
#该选项是可选配置,列出与heartbeat一起启动和关闭的进程,该进程一般是和heartbeat集成的插件,这些进程遇到故障可以自动重新启动。最常用的进程是pingd,此进程用于检测和监控网卡状态,需要配合ping语句指定的ping node来检测网络的连通性。其中hacluster表示启动pingd进程的身份。
#下面的配置是关键,也就是激活crm管理,开始使用v2 style格式
crm respawn
#注意,还可以使用crm yes的写法,但这样写的话,如果后面的cib.xml配置有问题
#会导致heartbeat直接重启该服务器,所以,测试时建议使用respawn的写法
#下面是对传输的数据进行压缩,是可选项
compression bz2
compression_threshold 2
注意,v2 style不支持ipfail功能,须使用pingd代替
资源文件(/etc/ha.d/haresources)
node1 IPaddr::192.168.1.100/24/eth0 httpd
认证文件(/etc/ha.d/authkeys)
auth 1
1 crc


文章作者:yangdonglin
分享原文地址:http://yangdonglin.blog.51cto.com/5404572/1297439


ERROR: glib: ucast: error setting option SO_REUSEPORT(w)

空心菜 回复了问题 2 人关注 1 个回复 6084 次浏览 2015-10-24 15:46 来自相关话题

centos6.4升级内核版本详解

koyo 发表了文章 0 个评论 5236 次浏览 2015-10-23 19:52 来自相关话题

1.查看当前内核版本和内核参数配置 1.查看当前内核版本和内核参数配置 [root@proxy ~]# uname -r 2.6.32-358.el6.x86_64 [root@pro ...查看全部


1.查看当前内核版本和内核参数配置


1.查看当前内核版本和内核参数配置
[root@proxy ~]# uname -r
2.6.32-358.el6.x86_64

[root@proxy ~]# cat /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda3
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-358.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=b3c05d05-38bb-4cdd-864e-9c59cdcab2a0 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-358.el6.x86_64.img


2.下载解压linux-3.4.56.tar.xz内核版本包


[root@proxy src]# wget -c https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.4.56.tar.xz
[root@proxy src]# tar xf linux-3.4.56.tar.xz
[root@proxy src]# cd linux-3.4.56


3.配置安装内核


[root@proxy linux-3.4.56]# make mrproper                #清除环境变量,即清除配置文件
[root@proxy linux-3.4.56]# make menuconfig              #在菜单模式下选择需要编译的内核模块
找到以下选中选项并选中networking support → networking options → network packet filtering framework(netfilter)

(1).core netfilter configuration

勾中”Netfilter connection tracking support” -m state相关模块是依赖它的,不选则没有。
将netbios name service protocal support(new) 编译成模块,不然后面升级iptables后启动时会出错
勾中“Netfilter Xtables support (required for ip_tables)”
(2).IP: Netfilter Configuration

将 “IPv4 connection tracking support (require for NAT)” 编译成模块。
勾中IP tables support (required for filtering/masq/NAT) 。
将 “Full NAT” 下的 “MASQUERADE target support” 和 “REDIRECT target support” 编译成模块
(3).其它模块可以根据自己的需要进行选择,若不懂可以参考内核配置手册.

[root@proxy linux-3.4.56]# make clean                   #确保所有东西均保持最新状态.
[root@proxy linux-3.4.56]# make bzImage                 #生成内核文件
[root@proxy linux-3.4.56]# make modules                 #编译模块
[root@proxy linux-3.4.56]# make modules_install         #安装模块
[root@proxy linux-3.4.56]# make install                 #安装
make modules 和 make modules_install 这两步安装时间较长,请耐心等待!



4.查看/etc/grub.conf内核配置文件变化


[root@proxy ~]# cat /etc/grub.conf 
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda3
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (3.4.56)
root (hd0,0)
kernel /vmlinuz-3.4.56 ro root=UUID=b3c05d05-38bb-4cdd-864e-9c59cdcab2a0 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-3.4.56.img
title CentOS (2.6.32-358.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=b3c05d05-38bb-4cdd-864e-9c59cdcab2a0 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-358.el6.x86_64.img
从上面可以发现,新编译的内核已经ok!


5.修改系统启动内核选择


将/etc/grub.conf文件中default=1修改为default=0
[root@proxy ~]# sed -i 's/default=1/default=0/g' /etc/grub.conf


6.重启系统,让新内核加载生效


[root@proxy ~]# reboot


7.重新登陆系统验证内核版本


[root@proxy ~]# uname -r
3.4.56

redis错误error: jemalloc/jemalloc.h分析解决

push 发表了文章 0 个评论 5687 次浏览 2015-10-23 14:19 来自相关话题

安装redis-2.6.6过程中遇到一些错误,这里总结分享出来! make错误描述 [root@cachedb redis-2.6.6]# make cd src && make all ...查看全部
安装redis-2.6.6过程中遇到一些错误,这里总结分享出来!


make错误描述


[root@cachedb redis-2.6.6]# make
cd src && make all
make[1]: Entering directory `/usr/local/src/redis-2.6.6/src'
CC adlist.o
在包含自 adlist.c:34 的文件中:
zmalloc.h:50:31: 错误:jemalloc/jemalloc.h:没有那个文件或目录
zmalloc.h:55:2: 错误:#error "Newer version of jemalloc required"
make[1]: *** [adlist.o] 错误 1
make[1]: Leaving directory `/usr/local/src/redis-2.6.6/src'
make: *** [all] 错误 2


分析


在README 文件中我们会发现有如下一段话:
Allocator
---------

Selecting a non-default memory allocator when building Redis is done by setting
the `MALLOC` environment variable. Redis is compiled and linked against libc
malloc by default, with the exception of jemalloc being the default on Linux
systems. This default was picked because jemalloc has proven to have fewer
fragmentation problems than libc malloc.

To force compiling against libc malloc, use:

% make MALLOC=libc

To compile against jemalloc on Mac OS X systems, use:

% make MALLOC=jemalloc
上面是说关于分配器allocator, 如果有MALLOC  这个环境变量,会有用这个环境变量的 去建立Redis。
而且libc 并不是默认的分配器,默认的是 jemalloc, 因为jemalloc 被证明有更少的 fragmentation problems 比libc。但是如果你又没有jemalloc 而只有 libc 当然 make 出错。 所以我们需要加一个参数。


解决方法


make MALLOC=libc
我是打杂的!遇到的错误总结,分享笔记!

redis源码安装脚本

push 发表了文章 0 个评论 2705 次浏览 2015-10-23 14:02 来自相关话题

#!/bin/bash pdir=/usr/local/src install_redis () { mkdir -pv /data/logs/redis/ && mkdir -pv /data/redis_ ...查看全部
#!/bin/bash
pdir=/usr/local/src

install_redis () {
mkdir -pv /data/logs/redis/ && mkdir -pv /data/redis_6379
cd $pdir
wget http://redis.googlecode.com/files/redis-2.4.4.tar.gz
tar zxf redis-2.4.4.tar.gz
cd redis-2.4.4
make
make PREFIX=/usr/local/redis install
cd $pdir
rsync -av redis.conf /usr/local/redis/
rsync -av redis /etc/init.d/
chmod 755 /etc/init.d/redis
/etc/init.d/redis start
}
install_redis
配置文件如下:
daemonize yes
pidfile /var/run/redis_6379.pid
port 6379
timeout 0
loglevel notice
logfile /data/logs/redis/redis_6379.log
databases 16
dir /data/redis_6379
slave-serve-stale-data yes
appendonly no
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
slowlog-log-slower-than 10000
slowlog-max-len 1024
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
activerehashing yes
启动脚本如下:
#/bin/sh
[size=16]Configurations injected by install_server below.... [/size]
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli
PIDFILE=/var/run/redis_6379.pid
CONF="/usr/local/redis/redis.conf"
REDISPORT="6379"

case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -p $REDISPORT shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
*)
echo "Please use start or stop as first argument"
;;
esac

我是打杂的,分享给需要的人吧!
 
#!/bin/sh
#
# redis init file for starting up the redis daemon
#
# chkconfig: - 20 80
# description: Starts and stops the redis daemon.
#
### BEGIN INIT INFO
# Provides: redis-server
# Required-Start: $local_fs $remote_fs $network
# Required-Stop: $local_fs $remote_fs $network
# Short-Description: start and stop Redis server
# Description: A persistent key-value database
### END INIT INFO

# Source function library.
. /etc/rc.d/init.d/functions

name="redis-server"
exec="/usr/bin/$name"
shut="/usr/libexec/redis-shutdown"
pidfile="/var/run/redis/redis.pid"
REDIS_CONFIG="/etc/redis.conf"

[ -e /etc/sysconfig/redis ] && . /etc/sysconfig/redis

lockfile=/var/lock/subsys/redis

start() {
[ -f $REDIS_CONFIG ] || exit 6
[ -x $exec ] || exit 5
echo -n $"Starting $name: "
daemon --user ${REDIS_USER-redis} "$exec $REDIS_CONFIG --daemonize yes --pidfile $pidfile"
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}

stop() {
echo -n $"Stopping $name: "
[ -x $shut ] && $shut
retval=$?
if [ -f $pidfile ]
then
# shutdown haven't work, try old way
killproc -p $pidfile $name
retval=$?
else
success "$name shutdown"
fi
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}

restart() {
stop
start
}

rh_status() {
status -p $pidfile $name
}

rh_status_q() {
rh_status >/dev/null 2>&1
}


case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart}"
exit 2
esac
exit $?

ubuntu下snmp错误Sub-id not found: (top) sysDescr解决

Geek小A 发表了文章 0 个评论 7727 次浏览 2015-10-23 00:51 来自相关话题

一般情况下我们安装snmp如下安装# sudo apt-get -y install snmp snmpd然后设置snmp配置用户名密码,我这里使用v3版本# sudo net-snmp-config --create-snmpv3-user -ro -A s ...查看全部
一般情况下我们安装snmp如下安装
# sudo apt-get -y install snmp snmpd
然后设置snmp配置用户名密码,我这里使用v3版本
# sudo net-snmp-config --create-snmpv3-user -ro -A snmp@mima -a MD5 spuser

测试
# sudo snmpwalk -v 3 -u spuser -a MD5 -A "snmp@mima" -l authNoPriv 127.0.0.1 sysDescr
然后出现如下错误:
sysDescr: Unknown Object Identifier (Sub-id not found: (top) -> sysDescr)
这个是因为你缺少snmp所需的mib库,如下安装使用安装最新的mibs库
# sudo sudo apt-get install snmp-mibs-downloader
然后再测试,你还有可能会出错,那是因为snmp配置的mibs不是想要的,你只需要如下操作
# sudo > /etc/snmp/snmp.conf
把snmp文件清空,活着注释mibs那行也行!
最后你应该测试ok的,结果如下:
# sudo snmpwalk -v 3 -u spuser -a MD5 -A "snmp@mima" -l authNoPriv 127.0.0.1 sysDescr
SNMPv2-MIB::sysDescr.0 = STRING: Linux zabbixagent 2.6.32-431.11.5.el6.ucloud.x86_64 #1 SMP Thu Jul 3 09:42:34 CST 2014 x86_64
问题解决了,希望可以帮到同样遇到这样问题的人!

sed匹配行前行后加入一行数据

Ansible 发表了文章 0 个评论 3361 次浏览 2015-10-22 11:39 来自相关话题

a 追加内容 sed '/匹配内容/a\要加入的内容' test.file(将内容追加到匹配内容目标行的下一行位置) i 插入内容 sed '/匹配内容/i\要加入的内容' test.file (将内容插入到匹配内容目标行的上一行位置) ...查看全部
a 追加内容 sed '/匹配内容/a\要加入的内容' test.file(将内容追加到匹配内容目标行的下一行位置)
i 插入内容 sed '/匹配内容/i\要加入的内容' test.file (将内容插入到匹配内容目标行的上一行位置)
 


Example:


#我需要把文件中包含'10.0.1.110'这个关键词的行前或行后加入内容为"10.0.1.119  sendhost"一行记录
test.file 文件内容如下:
[root@mhost contorl]# cat test.file
10.0.1.114 masterweb
10.0.1.112 coredb1
10.0.1.110 wwwweb
10.0.1.113 coredb2
10.0.1.111 cache1
10.0.1.110 cache2
10.0.1.115 cache3


加在行后


[root@mhost contorl]# sed '/10.0.1.110/a\10.0.1.119 sendhost' test.file 
10.0.1.114 masterweb
10.0.1.112 coredb1
10.0.1.110 wwwweb
10.0.1.119 sendhost 已经加上
10.0.1.113 coredb2
10.0.1.111 cache1
10.0.1.110 cache2
10.0.1.119 sendhost 已经加上
10.0.1.115 cache3

#如果要精确匹配就是要把内容加到10.0.1.110 cache2下面一行的话,匹配内容就要精确
[root@mhost contorl]# sed '/10.0.1.110 cache2/a\10.0.1.119 sendhost' test.file
10.0.1.114 masterweb
10.0.1.112 coredb1
10.0.1.110 wwwweb
10.0.1.113 coredb2
10.0.1.111 cache1
10.0.1.110 cache2
10.0.1.119 sendhost 已经加上
10.0.1.115 cache3


加在行前


[root@mhost contorl]# sed '/10.0.1.110/i\10.0.1.119 sendhost' test.file 
10.0.1.114 masterweb
10.0.1.112 coredb1
10.0.1.119 sendhost 已经加上
10.0.1.110 wwwweb
10.0.1.113 coredb2
10.0.1.111 cache1
10.0.1.119 sendhost 已经加上
10.0.1.110 cache2
10.0.1.115 cache3

#如果要精确匹配就是要把内容加到10.0.1.110 cache2上面一行的话,匹配内容就要精确
[root@mhost contorl]# sed '/10.0.1.110 cache2/i\10.0.1.119 sendhost' test.file
10.0.1.114 masterweb
10.0.1.112 coredb1
10.0.1.110 wwwweb
10.0.1.113 coredb2
10.0.1.111 cache1
10.0.1.119 sendhost 已经加上
10.0.1.110 cache2
10.0.1.115 cache3
**确认修改没有问题sed -i 加-i 尝试然后放心修改!

apr_sockaddr_info_get() failed for

Ansible 回复了问题 2 人关注 1 个回复 4254 次浏览 2015-10-20 17:14 来自相关话题