mongodb集群之副本集安装配置

mongodb集群之副本集安装配置

准备工作: host zy_mongo01 副本集主节点 hostname 121.41.101.208 10.168.218.46 host zy_mongo02 副本集副本节点 hostname 121.41.118.184 10.168.217.186 host zy_mongo03 副本集副本节点 hostname 121.40.61.78 10.252.130.121 mongodb 目录: mkdir -p /data/mongodb/replset/data 存放mongo数据目录 mkdir -p /data/mongodb/replset 存放mongo文件目录 安装操作: tar xf mongodb-linux-x86_64-2.6.8.tgz mv mongodb-linux-x86_64-2.6.8 /data/mongodb/mongodb 启动: 在三台机器上做如下操作: /data/mongodb/mongodb/bin/mongod --dbpath /data/mongodb/replset/data/ --replSet repset 提示日志: 2015-04-21T11:17:23.238+0800 [rsStart] replSet can't get local.system.replset config from self or any seed (EMPTYCONFIG) 2015-04-21T11:17:24.238+0800 [rsStart] replSet can't get local.system.replset config from self or any seed (EMPTYCONFIG) 2015-04-21T11:17:25. [Read More]

Rsync+inotify时间服务器之间文件实时同步

Rsync+inotify时间服务器之间文件实时同步

rsync介绍 与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的。而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式。其次,rsync不能实时的去监测、同步数据,虽然它可以通过linux守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应用故障时完全的恢复数据。基于以上原因,rsync+inotify组合出现了! inotify介绍 Inotify 是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件。 在上面章节中,我们讲到,rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样刚好解决了同步数据的实时性问题。 环境介绍 1、服务器相关信息 Server1: OS: CentOS6.7 IP: 192.168.190.129 Dir: /home/ops/test Server2: OS: CentOS7 IP: 192.168.190.131 Dir: /home/ops/test 2、安装rsync服务,在CentOS6下面.yum安装的是rsync3.0.6.为了保持和CentOS7一致版本.所以源码安装 [root@localhost local]# cd /home/ops/ [root@localhost ops]# wget https://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz [root@localhost ops]# cd rsync-3.0.9 [root@localhost rsync-3.0.9]# ./configure --prefix=/usr/local/rsysnc [root@localhost rsync-3.0.9]# make && make install 3、创建密码文件 [root@localhost rsync-3.0.9]# cd /usr/local/rsysnc/ [root@localhost rsysnc]# echo "rsync-password" > /usr/local/rsysnc/rsync.passwd [root@localhost rsysnc]# chmod 600 rsync.passwd 4、安装inotify 服务 [root@localhost rsysnc]# cd /home/ops/ [root@localhost ops]# ls rsync-3. [Read More]

使用rinetd让ecs访问阿里内网RDS服务器

CentOS6.5安装elasticsearch+logstash+kibana

背景:

		由于阿里云RDS内网和外网只能选择其中一,并且内网流量是全部免费的,相比较对外网来说是快了好多倍,大多数的连接都是选择使用内网来连接RDS数据库的。
	但是如果我们想通过外网访问和管理内网的RDS的怎么来实现尼?
	我们可以使用rinetd来实现ecs访问rds服务器。 

下载

	wget http://www.linuxboy.net/linux/rc/rinetd.tar.gz&&tar -xvf rinetd.tar.gz&&cd rinetd  
	sed -i 's/65536/65535/g' rinetd.c  

安装

RDS  rinetd 

Python学习之邮件发送

Python学习之邮件发送

测试环境

Python 2.7.6  

脚本如下

zhangkeyuan@opsnotes:~/Test/smtplib » cat simple2.py  
#!/usr/bin/python  
#coding: utf-8  
import smtplib  
from email.mime.text import MIMEText  
HOST = "smtp.qq.com"  
SUBJECT = u"博客流量数据统计"  
TO = "zhangky@jiagouyun.com"  
FROM = "431054426@qq.com"  
msg = MIMEText("""  
    <table width="800" border="0" cellspacing="0" cellpadding="4">  
    <tr>  
        <td bgcolor="#CECFAD" height="20" style="font-size:14px">* 博客数据 <a href="opsnotes.net">更多>></a></td>  
    </tr>  
    <tr>  
        <td bgcolor="#EFEBDE" height="100" style="font-size:13px">  
        1) 日访问量: <font color=red>154333</font> 访问次数:12834 页面浏览:12345 点击数:12306 数据流量:521MB<br>  
        2) 状态码信息<br>  
        &nbsp;&nbsp;500:105 404:3264 503:214<br>  
        3) 访问浏览信息<br>  
        &nbsp;&nbsp;IE:50% firefox:10% chrome:30% other:10%<br>  
        4) 页面信息<br>  
        &nbsp;&nbsp/index.php 42153<br>  
        &nbsp;&nbsp/viwe.php 21451<br>  
        &nbsp;&nbsp/login.php 5112<br>  
        </td>  
    </tr>  
    </table>""","html","utf-8")  

msg['Subject'] = SUBJECT  
msg['From'] = FROM  
msg['To'] = TO  
try:  
        server = smtplib.SMTP()  
        server.connect(HOST, "25")  
        server.starttls()  
        server.login("431054426@qq.com","XXWWXX))000")  
        server.sendmail(FROM, TO, msg.as_string())  
        server.quit()  
         print "邮件发送成功!"  
except Exceotion, e:  
        print "失败: "+str(e)  
zhangkeyuan@opsnotes:~/Test/smtplib »  
[Read More]

使用paramiko在windows下批量登陆linux服务器

使用paramiko在windows下批量登陆linux服务器

环境:

windows8.1 X86_64  

被测试的机器:

192.168.100.228,192.168.100.240

脚本如下:

	#!/bin/env python
	import paramiko
	import os
	import datetime
	from ConfigParser import ConfigParser

	ConfigFile = 'ipaddr.txt'
	config = ConfigParser()
	config.read(ConfigFile)
	hostname1=''.join(config.get('IP','ipaddr'))
	address=hostname1.split(';')
	print address
	username = 'root'
	password = '123456'
	port = 22
	if __name__=="__main__":
		for ip in address:
			paramiko.util.log_to_file('paramiko-ssh1.log')
			ssh = paramiko.SSHClient()
			ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
			ssh.connect(hostname=ip,username=username,password=password)
			stdin,stdout,stderr=ssh.exec_command('ifconfig eth0;free -m')
			print stdout.read()
			ssh.close()
[Read More]

在windows上安装paramiko模块

在windows上安装paramiko模块

环境:

windows8.1 X86_64  

需求:

Python中使用SSH需要用到OpenSSH,而OpenSSH依赖于paramiko模块,而paramiko模块又依赖于   pycrypto模块,因此要在Python中使用SSH。所以我们需要先安装pycrypto工具,然后再安装paramiko模块才能使用。  
安装Parmiko首先要保证Python 已经安装完成。  
PS:	linux的安装相对简单,只需要下载安装就OK  
[Read More]

实战:Zabbix 聚合功能配置与应用

实战:Zabbix 聚合功能配置与应用

环境:

Server: CentOS6.3_X86   zabbix 2.0.8
Clinet:  windows/Linux

需求:

由于业务需求的扩展,需要监控所有服务器的在线人数,然后把所有的在线人数都统计到一起.然后我们根据这一需求进行实施,前期准备工作我们都已经做完,zabbix的本地服务器的在线人数我们都已统计出来,我们现在要做的就是把本地统计好的数据汇聚到一起,然后图标展示出来。

思路:

1.	首先创建一个组,把所有的host都添加到这个组里面
2.	然后创建Template,来监控agent服务器的在线人数
3.	然后我们在使用zabbix聚合把所有在agent的人数统计到一起
4.	然后绘图查看是否成功
[Read More]

使用saltstack来源码安装mysql

使用saltstack来源码安装mysql

环境:

salt_master:	192.168.100.228
salt_client1:	192.168.100.245

master client 版本一致
[root@salt_server base]# salt --versions-report
       Salt: 0.17.5
     Python: 2.6.6 (r266:84292, Jun 18 2012, 14:18:47)
     Jinja2: unknown
   M2Crypto: 0.20.2
 msgpack-python: 0.1.13
   msgpack-pure: Not Installed
   pycrypto: 2.0.1
     PyYAML: 3.10
      PyZMQ: 2.2.0.1
        ZMQ: 3.2.3
[root@salt_server base]# 

开始安装部署文件:

top.sls文件
[root@salt_server base]# cat top.sls 
base:
  'salt_client*':
      - mysql
[root@salt_server base]#
[Read More]

使用saltstack来源码安装nginx

使用saltstack来源码安装nginx

环境:

salt_master: 192.168.100.228
salt_client1: 192.168.100.245

结构:

[root@salt_server base]# pwd
/srv/salt/base
[root@salt_server base]#
[root@salt_server base]# cat top.sls 
base:
  'salt_client*':
      - nginx
[root@salt_server base]# 
[root@salt_server base]# tree nginx
nginx
├── conf.sls
├── files
│   ├── nginx
│   ├── nginx-1.7.3.tar.gz
│   ├── nginx.conf
│   └── vhost.conf
├── init.sls
├── install.sls
└── vhost.sls

1 directory, 9 files
[root@salt_server base]# 
[Read More]

在CentOS6上使用saltstack配置Apache ssh模块

在CentOS6上使用saltstack配置Apache ssh模块

####如下的salt states是我们需要安装的,Salt的状态系统文件 一、使用salt来同步一个第一个简单的文件 ———————修改master配置文件,切记需要重启master [root@salt_server ~]# vim /etc/salt/master file_roots: base: - /srv/salt/base 默认这个目录是没有的,我们需要创建一个目录;然后我们需要创建一个文件top.sls,如果玩过puppet就知道这个文件就相当puppet文件的site.pp [root@salt_server ~]# mkdir /srv/salt/base [root@salt_server ~]# cd /srv/salt/base [root@salt_server base]# echo “test salt first file” » first.txt [root@salt_server base]# salt ‘salt_client1’ cp.get_file salt://first.txt /home/first.txt salt_client1: /home/first.txt [root@salt_server salt]# 在客户端查看 [root@salt_client1 home]# pwd /home [root@salt_client1 home]# cat first.txt test salt first file [root@salt_client1 home]# 二、来创建第一个文件 [root@salt_server base]# pwd /srv/salt/base [root@salt_server base]# mkdir httpd [root@salt_server base]# cat top.sls base: ‘salt_client1’: - httpd.pack [root@salt_server base]#

[Read More]