运维基础组件注意事项
运维的基础就是统一,没有统一啥都是扯谈。 首先是hostname,IP,DNS的统一规划,这个是后续一切的根本。 hostname一定是要可识别具体上面的应用程序的。比如nginx01-bid-hotel.sh1.cn , 这个名字就可以很好的识别部门,项目和具体的应用。同时也可以识别到所在的机房。 为什么要用nginx01呢,不写web01呢,因为用web你是不知道这个是nginx只是代理还是真实的app应用呢。所以我个人用上面的应用程序进行分类,而且尽量不要缩写,毕竟这个是一次性的,你要缩写了你自己清楚,别人未必能够清楚。 IP这个问题,如果可以自己分配的,那必须按需分配好了。先说大的网段。千万不要一个机房就 10.0.0.0/8 这样的进行分。一般来说我们单一一个IDC不会超过256的3次方的机器数量,所以我们一般一个独立IDC都是用10.10.0.0/16 这样的方式来进行,第二个10一般是用省市的电话区号来进行区分,有些省市区号是3个数字或者4个数字,那就自己去编吧。 然后我们说小的,从我个人经验来说,一般会给远程控制卡,运维等基础服务会单独进行分网段。 所有的网关地址都应该是内部的交换机接口,一般都是设置 10.x.x.1/24 这样的。所有的应用最好把网段分的开一点,这样不会导致最后同一应用的网段太分散,比如hadoop集群这样的更要多留几个网段。至于某些领导喜欢吉利数字的网段和IP你也得考虑下。 关于DNS,所有内部服务器地址都是通过dns来获取的,千万别省事弄个hosts文件这样的。而合理的dns设置就应该跟hostname一样就可以了,但是在resolv.conf也要配置好searchdomain 和 重试间隔和次数。 这样大家ping的时候可以偷懒一下, 以及万一你一台DNS挂了不至于等很长时间。 至于nscd的使用还是看实际情况吧。 关于RPM源,这个这么多年还是感觉自己搭建和同步会比较好,一个是速度问题,一个是版本控制问题。虽然在时效性上会没有公共源快,但是我们可以保证速度,不然一旦所有机器同时更新你的公网带宽就挂了。而且时效性主要是看你同步的频率是怎么样的。同时每个IDC之间可以通过rsync进行同步。同时gpgkey还是需要的。 但是gem源,pypi这样的源是否还需要自己建立,这个主要是要评估内部使用的规模来进行了。 系统账号管理,这个无论你用系统本身的,还是LDAP,还是kerberos这样的,绕不过去的就是uid和gid。我一般都会给运维,开发,测试,程序都分不同的起始,比如运维10000开始,开发20000开始这样的。程序启动账号都是5000开始的nologin这样的账号。 同时组的设定也要注意,毕竟后面sudo权限的设置呢还。 安装包目录的统一,要/usr/local或者/opt/app 这样的,个人喜欢把程序,日志,配置文件放在一起。比如 /opt/app/nginx/{logs,sbin,conf,cache} 这样的,也有 喜欢 /opt/app/{logs,sbin,conf}/nginx 这样的。我喜欢那样的只是很方便的进行RPM打包,而且编译参数也比较简单。而且一般一个机器的应用就一个或者几个而已。 日志的收集。 都什么年代了,还一台台看呢。Linux系统日志都必须集中到日志服务器啊,rsyslog不就是干这个的,logwatch就是来进行分析和报警啊。特别是一些kernel类型和sercurity的日志。那程序的log呢, fluentd, flume这些不就是干这些个事情的。当然首先你要准备个大磁盘够装下3年的数据,至于用hdfs,还是glusterfs来装,但是千万别用mongodb来装。