Sep 182012
 

这个其实有点技术含量,我平常基本是靠经验。不过自己测试,难免有遗漏。如果一个新的版本出来,如何才能进行完整的测试呢?

今天看到redhat搞的一个Openstack测试日,里面的测试用例,应该可以很好借鉴一下。

https://fedoraproject.org/wiki/Test_Day:2012-09-18_OpenStack

我应该可以补充,让他更加完整。或者哪天翻译出来。

Sep 042012
 

整理一下Openstack的命令。下面的命令,我都是全部在机器验证过,主要是参考 redhat文档

 

查看rabbitmq 队列

rabbitmqctl list_queues

 

查看keystone的用户

keystone user-list

查看keystone endpoint

 keystone endpoint-list

查看keystone的role

keystone role-list

 

查看keystone 服务

keystone service-list

 

查看keystone租户

keystone tenant-list

 

查看租户情况

keystone tenant-get ID

 

查看keystone进程

ps -ef | grep -i keystone-all

查看日志是否有错误

grep ERROR /var/log/keystone/keystone.log

上传image

glance add name="Ubuntu 12.04 cloudimg amd64" is_public=true container_format=ovf \
disk_format=qcow2 < /root/precise-server-cloudimg-amd64-disk1.img

查看image

glance index

nova 命令查看image

nova image-list

 

查看image具体信息(ID是通过 glance index 查看获得)

glance show ID

 

查看nova 服务

nova-manage service list

 

创建密钥

nova keypair-add oskey > oskey.priv
chmod 600 oskey.priv

 

申请floating IP

nova floating-ip-create

 

安全组相关命令

nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
nova secgroup-list
nova secgroup-list-rules default

 

查看虚拟机配置种类

nova flavor-list

创建虚拟机(一个test的虚拟机)

nova boot --flavor 2 --key_name oskey --image ea3ffba1-065e-483f-bfe2-c84184ee76be test1

完整创建一个虚拟机的流程

 

nova keypair-add oskey > oskey.priv
chmod 600 oskey.priv
nova flavor-list
nova image-list
nova boot --flavor 2 --key_name oskey --image ea3ffba1-065e-483f-bfe2-c84184ee76be test1
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0

查看申请flating IP 列表

nova floating-ip-list

 

查看虚拟机

nova list

添加floating IP给虚拟机(id是虚拟机的ID,通过nova list获得)

nova add-floating-ip  7eb1d4b3-13fa-4e39-be17-3a27eb0db218 10.1.199.33

 

查看虚拟机的floating IP (nova list,就可以查看,需要等待1分钟)

nova list

 

ssh到虚拟机上 (ubuntu的虚拟机,默认的用户名是ubuntu,只能用密钥登陆)

ssh -i oskey.priv ubuntu@192.168.22.2

 

删除flating IP (ID就是虚拟机ID,通过 nova list 获得)

nova remove-floating-ip ID 10.1.199.33

 

删除虚拟机

nova delete ID

 

创建10G的volume

 nova volume-create --display_name "test volume" 10

查看nova volume情况

nova volume-list

把volume添加到虚拟机上

( ID是虚拟机的id,后面的1,是volume的ID)添加完后可以通过 nova volume-list查看结果

nova volume-attach 7eb1d4b3-13fa-4e39-be17-3a27eb0db218 1 /dev/vdc

 

查看虚拟机里的volume情况(登陆虚拟机里)

ubuntu@test1:~$ cat /proc/partitions 
major minor  #blocks  name

 253        0   10485760 vda
 253        1   10474380 vda1
 253       16   20971520 vdb
 253       32   10485760 vdc

格式化分区

sudo mkfs.ext4 /dev/vdc

 

 

sudo mkdir -p /mnt/volume
sudo mount /dev/vdc /mnt/volume

删除volume

nova volume-detach VM_ID Volume_ID

 

创建snapshot ( 完成后可以通过 nova image-list 查看)

nova image-create 7eb1d4b3-13fa-4e39-be17-3a27eb0db218 "snapshot 1"

虚拟机重启,停止

nova suspend ac9e6a9f-58c3-47c3-9b4c-485aa421b8a8
nova resume ac9e6a9f-58c3-47c3-9b4c-485aa421b8a8
nova reboot ac9e6a9f-58c3-47c3-9b4c-485aa421b8a8

vnc (详细可查看 https://www.ibm.com/developerworks/mydeveloperworks/blogs/e93514d3-c4f0-4aa0-8844-497f370090f5/entry/openstack_vnc_console18?lang=en)

ova  get-vnc-console myserver20 novnc
Sep 022012
 

今天看到彭勇的blog,提到这个问题。真的是非常及时。

其实7月份的时候,我就听sina的程辉提到这个问题,在大负载的时候,网络突然中断,表面上看都是正常的。症状和彭勇描述的是一样的。据说在IRC里讨论这个问题也很激烈。

彭勇blog地址

看完了https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/997978

http://bugs.centos.org/view.php?id=5526

如果你在运营中遇到这样的bug,估计你会疯掉的。

彭勇的blog,已经给出解决的办法,大家好好学习.

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 232012
 

把源放到本地,可以大大提供效率,加上现在的公司,网络并不是太好,所以就更需要解决这个问题。对于centos和ubuntu,本地源的制作,其实有很大的差异。

这里做一个总结。

CentOS

对于CentOS来说,全部的源其实包括好几部分,这些包都分为x86和i386,我在服务器,也就只使用x86的包就足够。

  1. 光盘的包
  2. centos update,就是安全的补丁,redhat出的补丁,都会在这里。
  3. Centos plus, 这是centos团队制作的,额外的包,质量是有保证的。数量不多。

对于CentOS6.x来说,update和plus是相同的。

用cobbler,可以很方便制作本地源。你可以采用光盘导入,+update和pluse下载的方式,整合起来使用。

对于其他例如puppet的centos的源,也是可以用相同的方式来下载和管理。

对于EPEL的源,redhat的策略是先放在epel-testing上测试,没问题,再移到epel上。同步本地的方式,都是一样的。

Ubuntu

对我来说,ubuntu和centos的源,最大的不同是:ubuntu各个版本的软件包,全部都是在一个目录下。这样比较考验你的rsync的水平。

对于ubuntu的源来说,如ubuntu 12.04的源,分为

  1. precise
  2. precise-backports
  3. precise-proposed
  4. precise-security
  5. precise-updates

你安装完一个ubuntu后,他默认的源,就是上面的5个,并且还需要包括x86,i386和源码包。所以为了客户端不报错。最简单的办法,就是直接把全部的源下载到本地,120G的内容。

这个可以采用脚本下载。http://www.chenshake.com/centos6-x-production-of-ubuntu12-04-source/

对于puppet的第三方的源,如果是给ubuntu 12.04使用的,基本可以用相同的脚本,修改一下就可以使用。目前我正在下载puppet的apt源,

不过就是需要解决一个源的签名的问题:http://www.chenshake.com/the-following-signatures-couldnt-be-verified-because-the-public-key-is-not-available-the-solution/

可以考虑使用安装的时候,用脚本导入。