centos转型ubuntu的基础总结

以前经历的公司的server system主要都是centos/redhat ,目前新的公司主要使用ubuntu,虽然两者之间在很多命令的用法上没有区别,不过一些配置项的东西还是有些差异。这里做下简单的一个概况 。 一、主机名的配置 centos下修改主机名涉及到两个文件的修改/etc/hosts 、/etc/sysconfig/network ,两个文件的内容类似如下: # cat /etc/hosts 127.0.0.1 361way.com 361way localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 # cat /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=361way.com 如果修改完成后不想重启主机,可以使用hostname 361way先临时生效。 ubuntu修改主机名的方法和centos下的类似,也是修改两个文件/etc/hostname 、/etc/hosts ,文件内容类似如下:…

三张图看遍Linux性能监控、测试、优化工具

Linux 平台上的性能工具有很多,眼花缭乱,长期的摸索和经验发现最好用的还是那些久经考验的、简单的小工具。系统性能专家 Brendan D. Gregg在最近的 LinuxCon NA 2014 大会上更新了他那个有名的关于 Linux 性能方面的 talk (Linux Performance Tools)和幻灯片。 和 Brendan 去年的 talk 比较,今年增加了测试和优化两部分。下面的三张图片分别总结了 Linux各个子系统以及监控、测试、优化这些子系统所用到的工具。 监控 测试 优化

ZooKeeper快速搭建

Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。本文侧重于zookeeper的快速搭建。具体分为单机配置和集群模式两部分。 一、单机模式 1、配置JDK环境,略过。 2、获取及下载zookeeper 下载地址:http://mirror.bit.edu.cn/apache/zookeeper/stable/ , #wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz #tar zxvf zookeeper-3.4.6.tar.gz -C /usr/local #cd /usr/local #mv zookeeper-3.4.6 zookeeper 3、配置cfg文件 复制cfg配置文件 #cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg 并将配置文件中的datadir修改存放zookeeper的直实路径,如: dataDir=/opt/zookeeper 4、创建数据目录并启动zookeeper…

也看linux内存去哪儿了

前两天一台128G内存的oracle主机发生故障触发kdump,最终由于var目录空间不足,导致kdump生成不完全。结合之前redhat给出的建议,crash设置的空间最好大于memory 空间。对此我们做了一个简单的计算,认为kdump主机生成的是运行在内存里的信息 ,虽然主机有128G的内存,不过通过top查看并计算后发现我实际上只使用7G多的大小,而使用free -m查看时已经使用了80G左右的内存 。站在DBA的角度看的话,这部分内存提前分配给了sga ,貌似也可以讲通。记得之前看过taobao褚霸写的一篇分析。这里再结合该文章算算。 通过褚霸的Linux Used内存到底哪里去了?我们已经了解到内存主要消耗在三个方面:1. 进程消耗。 2. slab消耗 3.pagetable消耗。 由于不便于直接在现网oracle主机上进行操作,这里就以本blog的云主机为例进行测试。 一、查看已用内存总量 # free -m total used free shared buffers cached Mem: 996 908 88 0 174 283…

ansible小结(十 三)playbook中使用debug模块

平时我们在使用ansible编写playbook时,经常会遇到错误,很多时候有不知道问题在哪里 。这个时候可以使用-vvv参数打印出来详细信息,不过很多时候-vvv参数里很多东西并不是我们想要的,这时候就可以使用官方提供的debug模块来查找问题出现在哪里。 playbook示例 # verbosity(added in 2.1),如果使用的的该本低于该版本,使用时会报错 – name: debug test one host hosts: 200.200.6.53 tasks: – debug: msg: “System {{ inventory_hostname }} has uuid {{ ansible_product_uuid }}” – debug:…

ansible小结(十 二)磁盘使用率筛选

年底了虽然有各种告警,不过还是需要做一下全网巡检,这里以磁盘使用率为例。由于目前平台上使用的是商业版的自动化工具bmc,其在执行分发都方面非常不存,不过在取值返回上做的不好---当然也和其是商业化工具有关,很多东西不开源,用shell 的语法概念写nsh时又执行不通过,NND总是要问原厂支撑 。刚好在测试环境上有之前安装的ansible环境,也测试下用ansible 来实现该功能。 一、实现目标 将所有主机的磁盘大于75%的主机获取到,并输出为下面的格式: 主机IP 主机名 磁盘挂载点信息 磁盘使用率 假如 host1上有多个分区都大于75% ,则写多条。当主机上没有一台符合时,则什么都不输出。 注:现网主机上有两个 bond 网卡,其中一个配置的是10段的IP,另一个配置的是192段的IP。这里要获取的是10段的IP。 二、 ansible + awk 简单输出 该问题我处理的结果是使用ansible api 写的一个python脚本实现的。先看下我在一个技术群和一个大牛的讨论的结果(点击图片看大图)。 如上图,大牛的做法用的是awk 的next方法进行的处理,awk 的next功能我也做过记录,具体参看awk next多行合并 。 这里有几个注意点需要说明下:…

ansible小结(十一)ansible普通用户su切换问题

在之前我曾总结了一点ansible系列博文,本篇还承接之前的篇幅吧。在现网应用中,安全加固后的主机是不允许直接以root用户登陆的,而很多命令又需要root用户来执行,在不改造现网的情况下。希望通过一个普通用户先登陆,再su切到root执行。而且每台主机的普通用户和root用户的密码又不同。希望在通过ansible执行的时候不需要交互输入密码,而是直接执行后输出结果。 一、ansible hosts配置文件 在之前的系列文章中我们提到,可以把密码写到hosts配置文件,通过查询官网的相关信息了解了,其除了ansible_ssh_user、ansible_ssh_pass变量外,还为su切换提供了ansible_su_pass变量,通过该变量我们可以把root密码直接写到配置文件中。具体如下: # cat /etc/ansible/hosts 10.212.52.14 ansible_ssh_user=test ansible_ssh_pass=111111 ansible_su_pass=*I2145 10.212.52.16 ansible_ssh_user=test ansible_ssh_pass=xyz123 ansible_su_pass=mn1Pokm 10.212.52.252 ansible_ssh_user=amos ansible_ssh_pass=asdf ansible_su_pass=xyzp)okm 注:我测试使用的ansible版本是1.9版的,在新的2.0版本中,变量也做了变化ansible_become_pass替换了之前的ansible_sudo_pass or ansible_su_pass ,具体可以参看官方文档。 二、ansible命令参数 在执行ansible -h查看时,会看到如下条目: –S, —su run operations…

ansible小结(十)ansible api

ansible api 与ansible-playbook api 本应该是后面放在 ansible条件与循环、ansible变量篇之后讲的,不过使用过后实在按捺不住提前写的冲动,这个插个队先讲讲API 部分。 一、ansible api ansible api 的使用非常强大,也非常简单,只不过把模块需要使用的参数写到了脚本中,这里先来看下官方给的示例,不过同于官方的是,我这里增我将结果进行了json美化输出。 # cat test_api.py #!/usr/bin/env python # coding=utf-8 import ansible.runner import json runner = ansible.runner.Runner( module_name=‘ping’, module_args=”, pattern=‘all’, forks=10…

ansible小结(九)playbook进阶

并发运行 ansible默认只会创建5个进程,所以一次任务只能同时控制5台机器执行.那如果你有大量的机器需要控制,或者你希望减少进程数,那你可以采取异步执行.ansible的模块可以把task放进后台,然后轮询它.这使得在一定进程数下能让大量需要的机器同时运作起来. 使用async和poll这两个关键字便可以并行运行一个任务. async这个关键字触发ansible并行运作任务,而async的值是ansible等待运行这个任务的最大超时值,而poll就是ansible检查这个任务是否完成的频率时间. 如果你希望在整个集群里面平行的执行一下updatedb这个命令.使用下面的配置 – hosts: all tasks: – name: Install mlocate yum: name=mlocate state=installed – name: Run updatedb command: /usr/bin/updatedb async: 300 poll: 10 你会发现当你使用上面的例子控制超过5台机器的时候,command.在上面yum模块会先在5台机器上跑,完成后再继续下面的机器.而上面command模块的任务会一次性在所有机器上都执行了,然后监听它的回调结果 如果你的command是控制机器开启一个进程放到后台,那就不需要检查这个任务是否完成了.你只需要继续其他的动作,最后再使用wait_for这个模块去检查之前的进程是否按预期中开启了便可.只需要把poll这个值设置为0,便可以按上面的要求配置ansible不等待job的完成. 最后,或者你还有一种需求是有一个task它是需要运行很长的时间,那你需要设置一直等待这个job完成.这个时候你把async的值设成0便可. 总结来说,大概有以下的一些场景你是需要使用到ansible的polling特性的…

ansible小结(八)ansible-playbook简单使用

ansbile-playbook是一系统ansible命令的集合,其利用yaml 语言编写,运行过程,ansbile-playbook命令根据自上而下的顺序依次执行。同时,playbook开创了很多特性,它可以允许你传输某个命令的状态到后面的指令,如你可以从一台机器的文件中抓取内容并附为变量,然后在另一台机器中使用,这使得你可以实现一些复杂的部署机制,这是ansible命令无法实现的。 playbook通过ansible-playbook命令使用,它的参数和ansible命令类似,如参数-k(–ask-pass) 和 -K (–ask-sudo) 来询问ssh密码和sudo密码,-u指定用户,这些指令也可以通过规定的单元写在playbook 。ansible-playbook的简单使用方法: ansible-playbook example-play.yml 。 一、一个简单的示例 下面给出一个简单的ansible-playbook示例,了解下其构成。 # cat user.yml – name: create user hosts: all user: root gather_facts: false vars: – user: “test”…