关于 十一月, 2012 的文章

使用dnsmasq快速搭建内网DNS

背景介绍
公司有一批测试服务器,之间希望通过自定义的域名进行访问,这样比较方便,但每个人每台机器都维护一个hosts的话会非常麻烦,于是想搭建一个内部的DNS服务器,对自定义的域名进行解析,同时缓存公网的域名。

首先,向导的DNS服务器肯定是bind9,但所谓杀鸡焉用牛刀,并且bind9的配置和后期维护都是比较麻烦的,而内网这种测试环境又经常需要更新配置。
于是,我们采用了dnsmasq,它简直太简单了,只需要下面几步就完成配置了。

1. 安装dnsmasq
$ sudo apt-get install dnsmasq

2. 添加域名解析记录
$ sudo vim /etc/hosts
192.168.10.10 hadoop-master.heylinux.com
192.168.10.11 hadoop-node-1.heylinux.com

3. 配置上级DNS服务器地址
$ sudo vim /etc/resolv.conf
nameserver 61.139.2.69

4. 重启DNS服务
$ sudo /etc/init.d/dnsmasq restart

5. 配置客户端,填入dnsmasq所在地址
$ sudo vim /etc/resolv.conf
nameserver 192.168.10.5

6. 测试内网DNS
$ ping hadoop-master.heylinux.com

7. 测试反解析
$ dig PTR 10.10.168.192.in-addr.arpa.

dnsmasq默认使用了/etc/hosts和/etc/resolv.conf,这样DNS本机也可以共享这些配置,但如果想要分开专门进行维护的话,可以在/etc/dnsmasq.conf中指定。
dnsmasq默认还集成了DHCP与TFTP服务器,默认如果不配置的话服务不会启动。
dnsmasq的优点在于快捷方便并易于维护,如果想实现比如多IP轮询,根据IP源做智能解析等高级功能,毫无疑问,安心上bind9吧。

,

No Comments

Chef集中管理工具实践之 (1) 环境部署

目录结构
Chef集中管理工具实践之 (0) 什么是Chef
Chef集中管理工具实践之 (1) 环境部署
Chef集中管理工具实践之 (2) 服务器配置
Chef集中管理工具实践之 (3) 自定义配置

本文内容
Chef集中配置管理工具实践之 (1) 环境部署

参考资料
http://wiki.opscode.com/pages/viewpage.action?pageId=24773429
http://wiki.opscode.com/display/chef/Installing+Chef+Server+on+Debian+or+Ubuntu+using+Packages
http://wiki.opscode.com/display/chef/Workstation+Setup+for+Debian+and+Ubuntu
http://wiki.opscode.com/display/chef/Knife+Bootstrap

环境介绍
OS: Ubuntu 10.10 Server 64-bit //经过验证在12.04.1以及12.10上也成功实现部署。
Servers:
chef-server:10.6.1.170
chef-workstation:10.6.1.171
chef-client-1:10.6.1.172
chef-client-2:10.6.1.173

1. 安装配置Chef Server
编辑hosts
ubuntu@chef-server:~$ sudo vim /etc/hosts

127.0.0.1	localhost

10.6.1.170 chef-server
10.6.1.171 chef-workstation
10.6.1.172 chef-client-1
10.6.1.173 chef-client-2

注意:
将本机的hostname在/etc/hosts中添加一条IP解析记录,这一点非常重要。
因为后面在安装chef-server的过程中,会首先安装rabbitmq-server,缺少该解析记录的话,会导致rabbitma-server启动失败,进而影响到所有其它chef-server软件包的正常安装,如果不清楚这一点的话,会给问题的排查带来很大的不便。

创建 /etc/apt/sources.list.d/opscode.list
ubuntu@chef-server:~$ sudo echo "deb http://apt.opscode.com/ `lsb_release -cs`-0.10 main" | sudo tee /etc/apt/sources.list.d/opscode.list

添加GPG Key
ubuntu@chef-server:~$ sudo mkdir -p /etc/apt/trusted.gpg.d
ubuntu@chef-server:~$ sudo gpg --keyserver keys.gnupg.net --recv-keys 83EF826A
ubuntu@chef-server:~$ sudo gpg --export packages@opscode.com | sudo tee /etc/apt/trusted.gpg.d/opscode-keyring.gpg > /dev/null

ubuntu@chef-server:~$ sudo apt-get update
ubuntu@chef-server:~$ sudo apt-get install opscode-keyring

安装NTP时间服务器,Chef需要确保workstation与所有client与server的时钟一致
ubuntu@chef-server:~$ sudo apt-get install ntp

更新现有系统
ubuntu@chef-server:~$ sudo apt-get upgrade

安装chef-server软件包
ubuntu@chef-server:~$ sudo apt-get install chef chef-server

输入URL: http://chef-server:4000

输入密码: chef-server

该过程执行了如下过程:
安装Chef Server以及所依赖的软件包如Merb,CouchDB,RabbitMQ等共300多个软件包
启动CouchDB,RabbitMQ
启动chef-server-api并运行在4000端口
启动chef-server-webui并运行在4040端口
启动chef-solr-indexer并自动连接到rabbitmq-server
启动chef-solr,chef-client
在目录/etc/chef中创建相关的配置文件

安装完成后检查并确认以下端口:
Chef Server - 4000
Chef Server WebUI - 4040
CouchDB - 5984
RabbitMQ - 5672
Chef Solr - 8983
阅读全文 »

, ,

7 Comments

Chef集中管理工具实践之 (0) 什么是Chef

目录结构
Chef集中管理工具实践之 (0) 什么是Chef
Chef集中管理工具实践之 (1) 环境部署
Chef集中管理工具实践之 (2) 服务器配置
Chef集中管理工具实践之 (3) 自定义配置

本文内容
Chef集中管理工具实践之 (0) 什么是Chef

参考资料
http://my.oschina.net/williamherrychina/blog/63576
http://www.rubycc.com/bbs/topic_detail/91
http://gigix.thoughtworkers.org/2011/2/19/chef-1

Chef社区站点
http://community.opscode.com/

1.1 初识Chef
初识Chef,我们可以先了解一下DevOps运动 http://zh.wikipedia.org/wiki/DevOps,简单点说,就是传统的软件组织将开发、IT运营和质量保障设为各自分离的部门,而DevOps运动的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。
所以Chef简单点说,就是DevOps运动中的一项重要工具成员,是一个同时面向开发与运维的集中管理工具。

想像一下我们现在需要搭建一台MySQL Database Slave服务器,安装过程我们手动操作了没过多久,又需要第二台,这时候我们会想,如果之后安装第一台的时候把操作过程执行的命令写成脚本,现在安装第二台,运行一下脚本就行了,节约时间而且不容易出错。

Chef就相当于这样的一个脚本管理工具,但功能要强大得多,可定制性强,Chef将脚本命令代码化,定制时只需要修改代码,安装的过程就是执行代码的过程。
打个比方,Chef就像一个制作玩具的工厂,它可以把一些原材料做成漂亮的玩具, 它有一些模板,你把原材料放进去,选择一个模板(比如怪物史莱克),它就会制造出这个玩具,服务器的配置也是这样,一台还没有配置的服务器,你给它指定一个模板(role或recipe), Chef就会把它配置成你想要的线上服务器。

1.2 Chef和Puppet比较
就服务器的集中管理工具而言,知名度与Chef平分天下的是叫“Puppet”的工具,它们是OSS知名度排名最前的2个。

让我们来比较下它们的不同:

比较 Puppet Chef
历史 有一些 还年轻
用户 多,有名的公司也在用 还比较少,有一些公司如37signals在使用
开发的活跃度 中等 活跃(感觉正在旺季)
文档 也足够了
设定文件 用专用的文法书写(外部DSL) 用Ruby书写(内部DSL)
设定的构成 有点难懂 相对容易理解,命名等很合适
依存关系的处理 运行次序状况由系统端决定 像Makefile,基本上是书写顺序,相比Puppet更具脚本风格
必要的中间软件 没有 服务端需要有CouchDB、RabbitMQ
安装 简单,用gem的安装就可以 服务端安装比较麻烦。客户端简单,只需要gem就可以了
和其他系统的协作 感觉基本上没有 因为使用RESTful的服务API,用JSON可以取值,能做许多事

1.3 Chef结构
这是Chef的结构图,对图做一点解释:

有一个中心服务器(运行chef-server)
Chef将数据存储在CouchDB数据库里面
RabbitMQ和chef-solo等提供搜索的功能
Chef还提供了个图形的用户界面(cher-server-webui)
Workstation上有一个pem文件,knift(对Chef进行配置)利用它作为认证来和chef-server通过REST API进行通信
Workstation将配置(利用Recipe等描述各Client应该如何配置自己)上传到服务器
Client上有一个pem文件,chef-client利用它作为认证来和chef-server通过REST API进行通信
当新加一个Client的时候,需要从中心服务器上拷贝validator.pem到新加的Client
它利用这个pem进行注册得到自己的client.pem进行以后的认证
Client连到Chef服务器查看如何配置自己,然后进行自我配置

1.4 Chef的三种管理模式
Chef-Solo
由一台普通电脑控制所有的服务器,不需要专设一台chef-server

Client-Server
所有的服务器作为chef-client,统一由chef-server进行管理,管理包括安装、配置等工作 chef-server可以自建,但安装的东西较多,由于使用solr作为全文搜索引擎,还需要安装java

Opscode Platform
类似于Client-Server,只是Server端不需要自建,而是采用http://www.opscode.com提供的chef-server服务

而上面三种管理模式,无疑Client-Server模式是最好,也是最复杂的,因为这样可以在本地环境中搭建一个私有的Chef集中管理环境而无需依赖任何第三方的平台。
阅读全文 »

, ,

No Comments

升级Hadoop Hive的版本

Cloudera发行版中的Hive版本稍微有点低,可能满足不了一些功能需求,不过我们可以按照如下方式将其进行升级。

$ sudo wget http://archive.apache.org/dist/hive/hive-0.8.1/hive-0.8.1-bin.tar.gz
$ sudo tar xzvf hive-0.8.1-bin.tar.gz

$ sudo /etc/init.d/hadoop-hive-server stop

$ sudo mv /usr/lib/hive /usr/lib/hive-0.7.1
$ sudo mv hive-0.8.1-bin /usr/lib/hive-0.8.1
$ sudo ln -s /usr/lib/hive-0.8.1 /usr/lib/hive
$ cd /usr/lib/hive/lib
$ sudo ln -s hive-hbase-handler-0.8.1.jar hive-hbase-handler.jar

$ sudo vim /etc/hive/conf/hive-site.xml
新增或更改如下配置

<property>
  <name>hive.hwi.war.file</name>
  <value>/usr/lib/hive/lib/hive-hwi-0.8.1.war</value>
  <description>This is the WAR file with the jsp content for Hive Web Interface</description>
</property>

<property>
  <name>hive.aux.jars.path</name>
  <value>file:///usr/lib/hive/lib/hive-hbase-handler-0.8.1.jar,file:///usr/lib/hbase/hbase-0.90.4-cdh3u3.jar,file:///usr/lib/zookeeper/zookeeper-3.3.4-cdh3u3.jar,file:///usr/lib/hbase/lib/guava-r06.jar</value>
</property>

不过这样,可能会带来Hive的一些问题,
错误信息类似下面:
message:org.apache.hadoop.hbase.MasterNotRunningException

这里,是因为升级过后的Hive的hbase包依赖关系不对,做以下处理即可
$ sudo cp /usr/lib/hbase/hbase-0.90.4-cdh3u3.jar /usr/lib/hive/lib/
$ sudo cp /usr/lib/hbase/hbase-0.90.4-cdh3u3-tests.jar /usr/lib/hive/lib/

$ sudo cp /usr/lib/hive-0.7.1/lib/mysql-connector-java-5.1.22-bin.jar /usr/lib/hive/lib

$ cd /usr/lib/hive/lib
$ sudo mv hbase-0.89.0-SNAPSHOT.jar /tmp/
$ sudo mv hbase-0.89.0-SNAPSHOT-tests.jar /tmp/

$ cd /usr/lib/hive
$ sudo mv conf conf_bak
$ sudo ln -s /etc/hive/conf conf

重建数据库表结构
mysql> DROP DATABASE metastore;
mysql> CREATE DATABASE metastore;
mysql> USE metastore;
mysql> SOURCE /usr/lib/hive/scripts/metastore/upgrade/mysql/hive-schema-0.8.0.mysql.sql;

最后重启Hive
$ sudo /etc/init.d/hadoop-hive-server restart

,

No Comments

安装部署CloudStack 4.0企业私有云平台[原创分享]

参考资料
CloudStack Installation_Guide/installation.html
CloudStack Admin_guide/working-with-iso.html
CloudStack Admin_guide/creating-vms.html
CloudStack Admin_guide/create-templates-overview.html

目录结构
1. 什么是CloudStack
2. 宿主机的系统需求
3. 配置安装源
4. 安装Management Server
5. 安装配置KVM虚拟化Host主机
6. 用户界面
7. 配置Management Server
8. 创建Instance类型
9. 创建ISO安装源并创建Instance
10. 创建并定制Template
11. 通过定制的Template创建VM Instance
12. 其它优化设置

环境介绍
OS: Ubuntu Server 12.04.1 64-bit
Server:
10.6.203.10 cloudstack-server-1
- CloudStack Management Server
- CloudStack Agent
- NFS Server
- MySQL Server
注:CloudStack支持很好的分布式架构,上面 - 代表的所有角色都可以部署在不同的机器上,但在测试环境中因为条件有限我全部都部署到了一台机器上。

1. 什么是CloudStack
CloudStack是一个开源的具有高可用性及扩展性的云计算平台。
提到开源的云计算平台,相信大家首先想到的可能是OpenStack,目前国内的几家云计算平台如阿里云、盛大云以及新浪SAE貌似都基于OpenStack做了二次开发。
但使用过CloudStack之后,你会发现其实CloudStack更像是一个商业化过后的产品,有着非常好的用户界面,各个模块默认集成的很好,且安装与部署过程也相对容易一些。

事实上,CloudStack的前身是Cloud.com,后来被思杰收购。2011年7月,Citrix收购Cloud.com,将CloudStack 100%开源并交给Apache软件基金会管理。
同时,CloudStack已经有了许多商用客户,包括GoDaddy、英国电信、日本电报电话公司、塔塔集团、韩国电信等。

因此,CloudStack本身其实就是一个商业化过后的产品,然后在面对OpenStack等开源系统的巨大竞争压力的情况下选择了同样的开源。

目前Cloudstack支持管理大部分主流的hypervisors,如KVM,XenServer,VMware,Oracle VM,Xen等。
CloudStack具有商业软件所拥有的完善的用户权限管理,可以让用户构建一个安全的多租户云计算环境。
同时兼容Amazon AWS API 接口,可用来管理AWS的资源。
  
CloudStack的官方网址如下(目前还处于Apache基金会的孵化器中):
http://incubator.apache.org/cloudstack/

以下是CloudStack的系统架构,基本上与其他云计算平台相同:

2. 宿主机的系统需求
由于CloudStack 4.0 限定了libvirt版本 > 0.9.4,并在社区宣称所支持的OS为 CentOS/RHEL 6.2 以上或 Ubuntu Server 12.04。
因此,这里我们选择 Ubuntu Server 12.04.1 作为我们的操作系统。
官方下载地址:http://releases.ubuntu.com/precise/ubuntu-12.04.1-server-amd64.iso

另外,官方要求硬件至少满足以下条件:
1) 支持硬件虚拟化(Intel-VT 或 AMD-V)
2) 64位的x86 CPU
3) 4G内存
4) 36GB硬盘
5) 1张网卡

3. 配置安装源
配置国内的网易镜像源
$ sudo sed -i s/us.archive.ubuntu.com/mirrors.163.com/g /etc/apt/sources.list
$ sudo sed -i s/security.ubuntu.com/mirrors.163.com/g /etc/apt/sources.list

配置CloudStack官方源
$ sudo vim /etc/apt/sources.list.d/cloudstack.list
deb http://cloudstack.apt-get.eu/ubuntu precise 4.0

配置CloudStack官方源证书
$ wget -O - http://cloudstack.apt-get.eu/release.asc| sudo apt-key add -

更新系统的安装源
$ sudo apt-get update

4. 安装Management Server
4.1 准备好操作系统环境
查看主机名
$ hostname --fqdn
cloudstack-server-1

$ sudo vim /etc/hosts
添加以下记录
10.6.203.10 cloudstack-server-1

安装时间服务器
$ sudo apt-get install openntpd

4.2 下载安装 CloudStack Management Server 与 vhd-util
安装CloudStack Management Server
$ sudo apt-get install cloud-client
阅读全文 »

, , , , , ,

58 Comments