Rootop 服务器运维与web架构

2014-09-03
发表者 Venus
centos6.5安装docker已关闭评论

centos6.5安装docker

安装docker,添加epel源:
[root@varnish ~]# wget -c http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@varnish ~]# rpm -ivh epel-release-6-8.noarch.rpm
导入公钥:
[root@varnish ~]# rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
安装docker:
[root@varnish ~]# yum install -y docker-io
[root@varnish ~]# service docker start
[root@varnish ~]# chkconfig docker on

查看docker信息:

[root@varnish ~]# docker info
Containers: 2
Images: 33
Storage Driver: devicemapper
 Pool Name: docker-252:1-918311-pool
 Data file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata
 Data Space Used: 1748.4 Mb
 Data Space Total: 102400.0 Mb
 Metadata Space Used: 2.5 Mb
 Metadata Space Total: 2048.0 Mb
Execution Driver: native-0.2
Kernel Version: 2.6.32-431.el6.x86_64

从docker网站下载ubuntu镜像
[root@varnish ~]# docker pull ubuntu

用ubuntu输出hello world
[root@varnish ~]# docker run ubuntu /bin/echo hello world

列出已有的镜像:

[root@varnish ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04.1 c4ff7513909d 3 weeks ago 213 MB
ubuntu latest c4ff7513909d 3 weeks ago 213 MB
ubuntu 14.04 c4ff7513909d 3 weeks ago 213 MB
ubuntu trusty c4ff7513909d 3 weeks ago 213 MB
ubuntu utopic 75204fdb260b 3 weeks ago 226.4 MB
ubuntu 14.10 75204fdb260b 3 weeks ago 226.4 MB

当镜像下载成功后,可以看到12位的hash值像c4ff7513909d,这是下载完整的镜像的精简ID。
这些短的镜像ID是完整镜像ID的前12个字符,可以使用docker inspect 或者 docker images -notrunc=true来获得完整的镜像ID

进入ubuntu命令行:
[root@varnish ~]# docker run -i -t ubuntu /bin/bash

安装apache:

root@70cc135faece:/# sudo apt-get install apache2
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package apache2
提示找不到apache2这个包。
root@70cc135faece:/# sudo apt-get update //先更新软件包库
root@70cc135faece:/# sudo apt-get install apache2
root@70cc135faece:/# service apache2 start
root@70cc135faece:/# netstat -an | grep 80
tcp6 0 0 :::80 :::* LISTEN

执行exit退出容器,再执行 docker run -i -t ubuntu /bin/bash 发现apache没了。包括IP信息都变了。
这是因为刚才是根据ubuntu镜像启动了一个新的容器,退出时,也就关闭了。要继续使用的话,需要将其提交到仓库中。

查看之前启动的容器ID:

[root@varnish ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0c230803e75f 140630ae71cc /bin/bash 30 minutes ago Exited (130) 5 seconds ago ecstatic_bardeen
c06c6365282d ubuntu:14.04 /bin/bash 32 minutes ago Exited (127) 32 minutes ago drunk_poincare
d4ea5b21512f ubuntu:14.04 /bin/bash 44 minutes ago Exited (0) 33 minutes ago happy_feynman
542b4a79ab7b ubuntu:14.04 /bin/bash 48 minutes ago Exited (130) 46 minutes ago

根据提示,5秒之前退出的应该是我之前安装过apache的容器。
将其提交到仓库中:

[root@varnish ~]# docker commit d4ea5b21512f apache //CONTAINER ID + 别名 用于描述容器作用
f8e04197e16217a6580c31b4cc23198fde93d299fc9c8a2b4f0318625f276721 //返回一个唯一字符串,可以自定义名字。
下次启动:
[root@varnish ~]# docker run -t -i f8e04197e16217a6580c31b4cc23198fde93d299fc9c8a2b4f0318625f276721 /bin/bash //或者用别名

暂时记录到这里,回头继续。

删除单个镜像:

[root@varnish ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04.1 c4ff7513909d 3 weeks ago 213 MB
ubuntu 14.04 c4ff7513909d 3 weeks ago 213 MB
ubuntu trusty c4ff7513909d 3 weeks ago 213 MB
ubuntu 14.10 75204fdb260b 3 weeks ago 226.4 MB
[root@varnish ~]# docker rmi c4ff7513909d //IMAGE ID
Untagged: ubuntu:14.04
Untagged: ubuntu:14.04.1
Untagged: ubuntu:trusty
Deleted: c4ff7513909dedf4ddf3a450aea68cd817c42e698ebccf54755973576525c416
Deleted: cc58e55aa5a53b572f3b9009eb07e50989553b95a1545a27dcec830939892dba
Deleted: 0ea0d582fd9027540c1f50c7f0149b237ed483d2b95ac8d107f9db5a912b4240
Deleted: d92c3c92fa73ba974eb409217bb86d8317b0727f42b73ef5a05153b729aaf96b
Deleted: 9942dd43ff211ba917d03637006a83934e847c003bef900e4808be8021dca7bd
Deleted: 1c9383292a8ff4c4196ff4ffa36e5ff24cb217606a8d1f471f4ad27c4690e290

删除所有镜像:

[root@varnish ~]# docker rmi $(docker images | awk '{print$3}' | grep -v "IMAGE")

删除单个容器:

[root@varnish ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9408857e0cee centos:centos6 /bin/bash 3 seconds ago Up 2 seconds condescending_tesla
8d5a7b7a509c centos:centos6 /bin/bash About a minute ago Up About a minute focused_franklin
7a160e291b0c apache/centos6:latest /bin/bash 8 minutes ago Up 8 minutes loving_sammet

首选需要停止容器运行
[root@varnish ~]# docker stop 9408857e0cee //停止容器
9408857e0cee
[root@varnish ~]# docker rm 9408857e0cee //rm删除
9408857e0cee

[root@varnish ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8d5a7b7a509c centos:centos6 /bin/bash 2 minutes ago Up 2 minutes focused_franklin
7a160e291b0c apache/centos6:latest /bin/bash 9 minutes ago Up 9 minutes loving_sammet

删除所有容器:

[root@varnish ~]# docker stop $(docker ps -a | awk '{print$1}' | grep -v "CONTAINER" )
8d5a7b7a509c
7a160e291b0c
[root@varnish ~]# docker rm $(docker ps -a | awk '{print$1}' | grep -v "CONTAINER" )
8d5a7b7a509c
7a160e291b0c
[root@varnish ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@varnish ~]#

2014-08-30
发表者 Venus
Permission denied: /mnt/data/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable已关闭评论

Permission denied: /mnt/data/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable

这个错误比较奇怪,也是第一次遇到,在apache中创建了一个新的站点,目录为/mnt/data/test ,发布以后,访问提示权限错误,打不开项目。检查日志发现错误:

Permission denied: /mnt/data/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable

说无法检查htaccess文件,可以这个是静态网站,没有伪静态规则,其次资料说是权限问题,把网站根目录权限改为755,但是根目录已经是755,后来发现,上级目录权限不对,因为data也是新建的,但是不知道权限为什么默认为700,把/mnt/data目录改为755解决。

分析:

data目录默认为700,root拥有所有权限,其他组几其他用户没有权限访问,导致apache运行账户没有权限访问网站根目录,导致报错。

其次,为什么root创建的目录会为700,linux默认的umask值为0022,但是这台机器创建的文件夹权限为755,不知道umask值怎么改变的。

原因:

默认linux下/etc/profile对umask定义为:

if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
 umask 002
else
 umask 022
fi

但是这台机器配置为:

if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
 umask 077
else
 umask 077
fi

不知道是万网修改的还是别人改的。

2014-08-15
发表者 Venus
nagios添加新的主机监控刷新显示再刷新几次又不显示已关闭评论

nagios添加新的主机监控刷新显示再刷新几次又不显示

nagios添加新的主机监控刷新显示再刷新几次又不显示,这个问题弄的无比纠结,以为是浏览器缓存问题,换了几个还是这样,重启nagios服务还是如此,无意间ps了一下,发现启动了两个nagios进程。

找到问题了,用kill杀死,重新启动,问题解决。

至于为什么这样,可能是之前重启服务器的时候没找到锁文件,导致启动了俩进程,一个进程是没添加之前的另一个是添加之后的,导致出现问题。

之前出现的错误:

[root@nagios objects]# service nagios restart
Running configuration check…done.
Stopping nagios: No lock file found in /usr/local/nagios/var/nagios.lock
Starting nagios:This account is currently not available.
done.

2014-08-14
发表者 Venus
ustack-技术在于折腾-测试小型负载项目已关闭评论

ustack-技术在于折腾-测试小型负载项目

最近闲来无聊,画了个拓扑图,照着做了。正好发现北京一家公司基于openstack做二次开发,现在公测,申请邀请码,充值开始测试,现在充多少返多少!

ustack官网:https://www.ustack.com/

上图。

抛开防火墙、交换。ustack已经把网络该做的都搞定了。只需要部署项目即可。

想法:

用户请求数据,数据先发送到nginx反向代理,反向代理配置了两台后端lamp服务器,为啥用apache呢?因为我赶脚它跑php还是比较稳定的,问题相对nginx来说要少。让nginx去处理高并发,apache去解析动态请求。然后通过nginx负载均衡策略,默认轮询,分发到第一台lamp机器,服务器建立会话,将用户session放到memcached中共享,解决了session会话保持功能,这里没用nginx自带的ip_hash。下一步服务器开始请求php去解析动态请求,开始去mfs中找,所有的程序及媒体资源都在mfs中。这样解决了服务器之间数据一致性问题,也可以解决程序版本更新的重复性。如果并发又高了,可以采用fastdfs了,相率更高一些。我这里只是小小的测试玩玩而已。用户开始登陆了,会话分发到第二台服务器,查询资源,身份认证,去公共的mysql服务器上查询了。因为环境的问题,这里mysql没有做高可用,可以做mysql读写分离或者是mysql集群。这里以前都测试过,只是ustack中配额限制10台云主机,默认20个vcpu,50G内存。懒得再去申请,要不可以再把mysql集群加上。或者再延伸一下,再加一组nginx负载均衡,再加2台web服务器。通过dnspod域名解析实现dns轮询。这样用户负载又可以提高了。上午测试,将nginx带宽提高到30M,配置4核4G,压力测试到350,还可以撑起来,再高,就打不开了。当然其中需要内核优化,mysql优化。apache和nginx的优化,总之就是调参数调参数。

技术在于折腾~~~

http://ustack.rootop.org   (不敢保证啥时候就下线了。木有钱啊~~~撑起这么多机器,每天的费用对于个人来说不少了。)

说说ustack,按量计费,特别的精确,默认提供20个vcpu,50G内存。10台云主机,3个ip,可以在线申请提高配额。

在微博里@了一下 程辉 ,UnitedStack联合创始人 & CEO 。很热心有木有。

总体来说,平台开发的还不错。我这只是在于折腾~结束。

 

 

 

 

2014-08-07
发表者 Venus
MirantisOpenStack安装openstack云计算平台已关闭评论

MirantisOpenStack安装openstack云计算平台

  openstack拓扑图

这里在vmware workstation中模拟真实环境。一定要停掉vmware的”VMware DHCP Service“服务。否则会影响控制节点和计算节点获取ip。导致fuel无法发现节点。

vmnet1代表net1,vmnet8代表net2。其中net1用来安装云计算平台,包括安装控制节点和计算节点。net2用于控制节点管理计算节点,云主机的创建,删除,管理等。在完成安装MirantisOpenStack以后。一般用net2来管理。net1基本不怎么会用到。
mirantis官网:http://www.mirantis.com/ 自行下载系统镜像。

vmnet1 IP地址:10.20.0.111/255.0.0.0

vmnet8 IP地址:172.16.0.253/255.255.0.0

开始搭建:

安装 MirantisOpenStack(FUEL) ,创建虚拟机,网卡连接方式为vmnet1,硬盘大小最小30G,内存2G。指定镜像,启动虚拟机。

这里可以设置fuel的固定IP。安装完成后最好不要再修改,所以提前规划网络。

看一下安装过程。自动安装,无需干预。

通过puppet实现自动化安装。过程会比较慢。

fuel安装完成后,创建控制节点,最少需要双网卡,硬盘100G,以后需要上传自定义系统镜像到这里面,内存2G。设置BIOS,从网卡启动(控制节点和计算节点都是从网卡启动)网卡会自动从fuel获取相关信息,进行自动安装。当然,这里就需要在fuel中手动干预。再创建2个计算节点,100G硬盘,2G内存,双网卡。网卡一个连接vmnet1,另一个连接vmnet8

在完成fuel后,登陆系统时提示自动设置的用户名(root)密码(r00tme),web登陆地址。

根据提示的ip地址,通过浏览器登陆。这里建议用谷歌或者火狐,最好不要用IE。

中文的~

启动控制节点和2台计算节点,从网卡启动,并选择 bootstrap

在fuel的web界面中,会提示发现3个节点。

开始创建控制节点和计算节点。根据提示继续。

点击“新建OpenStack环境”

填写一个“名称”,命令云计算的名字。我对centos比较熟悉,所以选centos,点击 前进

这个用于控制节点高可用。

最后部署时,虚拟机(服务器)会自动重启,并安装相关服务。现在所需要的就是等待。

回到fuel的web界面可以看到进度。

提示安装完成,访问openstack主面板通过 http://172.16.0.2 或者 http://10.20.0.3 ,用户名 admin 密码 admin 登陆。可以看到控制节点功能,可以创建云主机等等。

MirantisOpenStack的安装先到这里。