Sep 012012
 

最开始接触Openstack,这块是比较头疼的,不同的文档,设置都会有所差异,并且都能工作,到底哪个是正确的呢?恐怕很难有定论,这里总结一下,那天发到邮件列表里请教.

下面这几个设置,最终的结果,就是有一块网卡变成bridge,我理解bridge,就是一个交换机, 虚拟机在上面可以进行互相的通讯.

下面假设 fix IP 采用192.168.100.0/24

一:单网卡

经常有朋友问,如果是单网卡,如何设置(https://blog.hpcloud.com/road-essex-part-4-openstack%E2%84%A2-nova-and-horizon)

在nova.conf 文件里

public_interface=eth0
flat_interface=eth0
flat_network_bridge=br100

由于是单块网卡,这里就比较特别。

/etc/network/interface

auto br100
iface br100 inet static
address 192.168.100.1
netmask 255.255.255.0
bridge_stp off
bridge_fd 0

 

二:双网卡

双网卡,理解起来比较容易。

在nova.conf 文件里

public_interface=eth0
flat_interface=eth1
flat_network_bridge=br100

这里设置的含义就是eth1是一个bridge。

eth0的设置,就和普通网卡设置一样,可以设置静态IP,也是可以dhcp获得。eth1的设置,我至少看到过3种设置

1:把网卡设置成混杂模式

这个很多文档都是这样设置,包括大名鼎鼎的培训机构http://www.mirantis.com/blog/openstack-networking-single-host-flatdhcpmanager/

也是这样推荐。另外Puppet的安装openstack文档,也是这样推荐设置

iface eth1 inet manual
  up ifconfig $IFACE 0.0.0.0 up
  up ifconfig $IFACE promisc

 

2:不设置任何IP

这是我一直使用的设置,这个是https://github.com/managedit/openstack-setup

这位朋友,应该也是参与Openstack的开发者,以前维护Diablo 的deb包的更新

auto eth1
iface eth1 inet manual
up ifconfig eth1 up

 

3:设置IP

采用fix IP的网段,例如fix IP是:192.168.100.0/24, 前面10个IP地址,留给服务器使用。那么我们就可以给eth1设置IP。

http://www.hastexo.com/resources/docs/installing-openstack-essex-4-ubuntu-1204-precise-pangolin/step-1-prepare-your-system

在nova.conf 有一个参数

flat_network_dhcp_start=192.168.100.11

前面保留的IP,就可以用来设置eth1的IP, 启动nova-network后,这个IP,就会变成所有虚拟机的网关. 如果你是采用mutilhost的设计.

Aug 282012
 

上周吧keystone已经装上,估计这次应该可以顺利吧Folsom装完。利用ubuntu的ppa源,我们可以比较方便测试Folsom。

这个纯粹是为了记录我的安装过程,很多东西都去掉。具体的过程,可以参考Essex单节点的安装。

这篇文档,已经过时,存在很多问题。可以查看新的版本:http://www.chenshake.com/openstack-folsom-guide-for-ubuntu-12-04/

目前发现Essex和Folsom的区别

  1. keystone的 导入数据的时候,以前的user,和role,现在改成user_id 和role_id,这个需要调整一下导入的脚本就可以。
  2. glance,需要多安装一个python-glanceclient包才行。

2012年8月28日: nova服务无法正常启动。这个和nova.conf 文件有关。

 

我这次是装了一个devstack脚本,参考devstack脚本的配置来设置。

Continue reading »

Aug 282012
 

这个东西以前一直都知道,不过真没实际使用.现在希望他每天帮我去同步源.所以就深入学习一下这个.

yum install crontabs

注意啊,是crontabs

不过现在的系统,默认是已经安装好,默认是不启动,你只需要启动该服务就可以.

/etc/init.d/crond start
chkconfig crond on

这个时候,你就可以使用 –l 参数来查看当前用户的计划任务。

# crontab -l
30 21 * * * /root/ubuntu_mirror.sh

添加计划任务,

 crontab -e

就可以进入vi编辑器.比较简单.

下面这些例子,倒是很全面,直接参考就基本可以满足我的需求.

 

http://www.cppblog.com/API/archive/2012/03/28/169237.html

参  数:
-e  编辑该用户的计时器设置。
-l  列出该用户的计时器设置。
-r  删除该用户的计时器设置。
-u<用户名称>  指定要设定计时器的用户名称。

2,crontab 格式

基本格式 :
* *  *  *  *  command
分 时 日 月 周  命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列 表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
crontab特殊的符号说明:
“*”代表所有的取值范围内的数字。特别要注意哦!
“/”代表每的意思,如”*/5″表示每5个单位
“-“代表从某个数字到某个数字
“,”分散的数字

crontab文件的一些例子:

30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启 apache。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、 10、22日的4 : 45重启apache。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启apache。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启apache

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每 隔一小时重启apache

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三 的11点重启apache

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启apache

*/30 * * * * /usr/sbin/ntpdate 210.72.145.44
每半小时同步一下时间

——————————– 如何查看crontab的日志记录 ——————————————————–

昨天crontab中的同步任务没有执行,不知道是什么原因没有执行,貌似任务hang住了,想查询一下crontab到底问题出在哪里,或者hang在了什么地方。
1.  linux
看 /var/log/cron这个文件就可以,可以用tail -f /var/log/cron观察
2.  unix
在 /var/spool/cron/tmp文件中,有croutXXX001864的tmp文件,tail 这些文件就可以看到正在执行的任务了。
3. mail任务
在 /var/spool/mail/root 文件中,有crontab执行日志的记录,用tail -f /var/spool/mail/root 即可查看最近的crontab执行情况。

Aug 282012
 

现在我把yum,apt-get,wget,都使用了代理,现在看看git如何使用代理。

测试devstack脚本,最痛苦的事情,就是每次下载git一堆的东西,时间非常漫长。本来希望搞一个本地的git,定时clone一下,不过这个有点高难度,对我来说。所以就先考虑git用proxy,这样重新安装,就省事多了。

http://www.vpsee.com/2011/07/how-to-use-git-through-a-http-proxy/

由于devstack脚本是 git clone https

所以也就简单。

export http_proxy="http://10.1.199.5:3128/"
export https_proxy=http://10.1.199.5:3128/

看看squid的log

1346123268.900  82497 10.1.199.8 TCP_MISS/200 681992 CONNECT
 github.com:443 - DIRECT/207.97.227.239 -
Aug 272012
 

搞技术的,经常都讨论这个问题,开源里就更是,选择太多,那个是最好的。所有人都希望自己的选择是最优的,而不会出错的。

但是现实的条件,其实很难做出最优决策。举一个简单的例子:Xen和KVM,你选择谁,不同的时候,你的选择会不一样。

下面这段话,我相信真的是过来人,以其在办公室里开会讨论那个更好,不然先用简单的办法去尝试一下,而不是指望在办公室里可以讨论出一个最佳的方案。

选择简单但是不完美的技术解决问题,先做!然后再不断优化。如果不去尝试,我们永远也不知道下一步要做什么,总是停留在对技术方案本身优劣的讨论上,是没有意义的。

http://www.infoq.com/cn/news/2012/08/ssd-trend

Aug 242012
 

对于ubuntu来说,keystone是比较麻烦安装,也是最容易出错,一旦出错,后面就基本没法进行。

今天尝试一下,安装Essex的版本的步骤,来安装一个keystone看看。没想到,真的遇到那个可怕的问题:keystone client无法找到啥。

我是使用以前的keystone导入脚本,但是不知道什么原因出错。尝试手工去添加,添加完 user,role,tenant后,进行授权,提示user id不对。

赶紧去看看devstack脚本是如何添加

https://github.com/openstack-dev/devstack/blob/master/files/keystone_data.sh

明白了

现在改成 –user_id, –role_id

keystone user-role-add --user_id $ADMIN_USER \
--role_id $ADMIN_ROLE --tenant_id $ADMIN_TENANT

以前是

keystone user-role-add --user $ADMIN_USER \
--role $KEYSTONESERVICE_ROLE --tenant_id $ADMIN_TENANT

这样更加清楚。不会搞错。剩下的就是怎么调整一下脚本.

folsome_keystone_data.sh.txt