puppet不在CentOS的基本源中必威:,大多数开发工

企业场景运维案例:sed实战修改多行配置技巧

本博文出自Bkjia博客老男孩linux运维,有任何问题请进入博主页面互动讨论!

博文地址:

老男孩老师有关sed实战技巧分享,来自课堂教学内容实战

必威 1

1、在指定行前插入两行内容,分别为oldboy和oldgirl。

提示:被修改的文件内容必须要大于等于2行

sed -i '2 ioldboynoldgirl' sshd_config 

2、企业实战例子:快速更改SSH配置(一键完成增加若干参数)

增加:

[[email protected] ssh]# sed -i '13 iPort 52113nPermitRootLogin nonPermitEmptyPasswords nonUseDNS nonGSSAPIAuthentication no'  sshd_config 

查看:

[[email protected] ssh]# sed -n '13,17p' sshd_config  Port 52113 PermitRootLogin no PermitEmptyPasswords no UseDNS no GSSAPIAuthentication no 

3、如果是快速修改参数可以用如下方法(企业实战例子)

echo "#--------sshConfig修改ssh默认登录端口,禁止root登录----------------------------#" cp /etc/ssh/sshd_config /etc/ssh/sshd_config.$(date +"%F"-$RANDOM) sed -i 's%#Port 22%Port 52113%' /etc/ssh/sshd_config sed -i 's%#PermitRootLogin yes%PermitRootLogin no%' /etc/ssh/sshd_config sed -i 's%#PermitEmptyPasswords no%PermitEmptyPasswords no%' /etc/ssh/sshd_config sed -i 's%#UseDNS yes%UseDNS no%' /etc/ssh/sshd_config sed -i 's%GSSAPIAuthentication yes%GSSAPIAuthentication no%' /etc/ssh/sshd_config egrep "UseDNS|52113|RootLogin|EmptyPass|GSSAPIAuthentication" /etc/ssh/sshd_config 

提示:如果是指定行修改还可以是:

sed -i '2735s/admin_tenant_name=service/adminadmin_tenant_name=admin/' nova.conf 

必威 2


本博文出自Bkjia博客老男孩linux运维,有任何问题请进入博主页面互动讨论! 博文地址:http:...

【博文推荐】Linux企业运维高效技巧心得及分享(1)

本博文出自Bkjia博主 吴光科 的博客,有任何问题请进入博主页面互动讨论!

博文地址:http://wgkgood.blog.51cto.com/1192594/1641247

随着Linux在企业中的不断飞速的应用,为了企业中更好的运维,熟悉日常运维的技巧能更好的满足企业的发展,同时让我们的运维更加轻松,不再觉得运维是苦逼的活,真正去锻炼去成长去磨练。

让我们的运维更有"韵味",让我们的生活更加美好。 通过本次课程的学习,我会把我在日常运维中的心得和体会分享给大家,让大家得到真正的知识,然后应用在自己的运维工作中。

那我们需要注意什么呢:

1) Linux行业目标

我们要明白学习Linux运维的目的,相信大家都是为了能找到一份非常好的工作,一个高薪的工作,不断的练习,不断的成长。

通过工作,让我们的生活更加的完整和充实。

2) Linux学习路线

在明白自己的大的目标之后,我们需要分解大目标,接下来就是真正去行动,去朝着小目标努力,有哪些小目标呢?

计算机基础知识—>硬件认识—>windows系统日常操作—>Linux系统入门—>Linux目录及权限学习—>linux必备20个命令(ls pwd cd cat useradd groupadd rm cp chown chmod vi find grep ps free top sed awk if for case wc yum rpm tar unzip more head tail等)

—>Linux简单服务器搭建(掌握tar常见文件解压方式,掌握安装软件的方法:

yum install方式安装;源码编译安装三步,configure、make、make install)

—>Apache服务构建—>Mysql服务搭建—>PHP服务器搭建—>LAMP架构整合discuz论坛—>Kickstart自动化系统安装—>cacti监控部署—>Shell脚本编程(包括各种语句的学习,if for awk for while sed等)—>Linux高级服务器搭建—>Nginx WEB服务器搭建—>Tomcat服务器搭建—>resin服务器搭建—>Nginx均衡java服务器—>LNMP架构搭建(yum/源码)—>Nginx动静分离—>LVS+Keepalived负载均衡部署—>LVS+Keepalived+Nginx+Tomcat均衡架构部署—>高级Shell编写—>自动化运维学习(KVM、Puppet、ZABBIX、Ansible、Mysql+DRBD等)

3) 编辑器命令技巧

熟悉命令行及vi编辑器的查找,匹配删除、跳转等等,例如在shell命令行里ctrl +a跳转到最前,ctrl +e跳转到最末尾。

必威 3

在vi编辑器里面:

Shift + ^跳转到开头,shift + $跳转到末尾。

匹配/word字符,删除光标所在字符按x即可,跳转到文本最末行按G,跳转到文本首行按gg。

同时删除光标行至文本最后一行:dG

删除光标行至文本第一行:dgg

4) 系统运行状态监测

可以使用free –m查看内存剩余大小,通常看

-/+ buffers/cache: 881 112(该值大约为真实内存值) 

必威 4

可以使用df –h查看到tmpfs内存文件系统,加速静态文件及图片:

必威 5

查看本地网卡流量技巧:

yum install iftop -y 

iftop -i eth0查看结果如下图:

必威 6

中间<= =>这两个左右箭头,表示的是流量的方向。 TX:发送流量。 RX:接收流量。 TOTAL:总流量。 Cumm:运行iftop到目前时间的总流量。 peak:流量峰值。 rates:分别表示过去 2s 10s 40s 的平均流量。 

必威 7


) 本博文出自Bkjia博主 吴光科 的博客,有任何问题请进入博主页面互动讨论! 博文地址 :...

【博文推荐】运维角度浅谈MySQL数据库优化(1)

本文出自Bkjia博客博主“企鹅”那点事儿,如有任何问题请进入博主页面互动讨论。

博文地址:http://lizhenliang.blog.51cto.com/7876557/1657465

一个成熟的数据库架构并不是一开始设计就具备高可用、高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善。数据库发展周期大致分为以下五个阶段:

1、数据库表设计

项目立项后,开发部根据产品部需求开发项目,开发工程师工作其中一部分就是对表结构设计。对于数据库来说,这点很重要,如果设计不当,会直接影响访问速度和用户体验。影响的因素很多,比如慢查询、低效的查询语句、没有适当建立索引、数据库堵塞(死锁)等。当然,有测试工程师的团队,会做压力测试,找bug。对于没有测试工程师的团队来说,大多数开发工程师初期不会太多考虑数据库设计是否合理,而是尽快完成功能实现和交付,等项目有一定访问量后,隐藏的问题就会暴露,这时再去修改就不是这么容易的事了。

2、数据库部署

该运维工程师出场了,项目初期访问量不会很大,所以单台部署足以应对在1500左右的QPS(每秒查询率)。考虑到高可用性,可采用MySQL主从复制+Keepalived做双击热备,常见集群软件有Keepalived、Heartbeat。

双机热备博文:

3、数据库性能优化

如果将MySQL部署到普通的X86服务器上,在不经过任何优化情况下,MySQL理论值正常可以处理1500左右并发连接数(QPS),经过优化后,有可能会提升到2000左右QPS,否则,访问量当达到1000多并发连接时,数据库处理性能就会变慢,而且硬件资源还很富裕,这时就该考虑软件问题了。那么怎样让数据库最大化发挥性能呢?一方面可以单台运行多个MySQL实例让服务器性能发挥到最大化,另一方面是对数据库进行优化,往往操作系统和数据库默认配置都比较保守,会对数据库发挥有一定限制,可对这些配置进行适当的调整,尽可能的处理更多连接数。

具体优化有以下三个层面:

3.1 数据库配置优化

MySQL常用有两种存储引擎,一个是MyISAM,不支持事务处理,读性能处理快,表级别锁。另一个是InnoDB,支持事务处理(ACID),设计目标是为处理大容量数据发挥最大化性能,行级别锁。

表锁:开销小,锁定粒度大,发生死锁概率高,相对并发也低。

行锁:开销大,锁定粒度小,发生死锁概率低,相对并发也高。

为什么会出现表锁和行锁呢?主要是为了保证数据的完整性,举个例子,一个用户在操作一张表,其他用户也想操作这张表,那么就要等第一个用户操作完,其他用户才能操作,表锁和行锁就是这个作用。否则多个用户同时操作一张表,肯定会数据产生冲突或者异常。

根据以上看来,使用InnoDB存储引擎是最好的选择,也是MySQL5.5以后版本中默认存储引擎。每个存储引擎相关联参数比较多,以下列出主要影响数据库性能的参数。

公共参数默认值:

max_connections = 151 #同时处理最大连接数,推荐设置最大连接数是上限连接数的80%左右    sort_buffer_size = 2M #查询排序时缓冲区大小,只对order by和group by起作用,可增大此值为16M query_cache_limit = 1M   #查询缓存限制,只有1M以下查询结果才会被缓存,以免结果数据较大把缓存池覆盖 query_cache_size = 16M   #查看缓冲区大小,用于缓存SELECT查询结果,下一次有同样SELECT查询将直接从缓存池返回结果,可适当成倍增加此值 open_files_limit = 1024  #打开文件数限制,如果show global status like 'open_files'查看的值等于或者大于open_files_limit值时,程序会无法连接数据库或卡死 

MyISAM参数默认值:

key_buffer_size = 16M#索引缓存区大小,一般设置物理内存的30-40% read_buffer_size = 128K  #读操作缓冲区大小,推荐设置16M或32M 

InnoDB参数默认值:

innodb_buffer_pool_size = 128M #索引和数据缓冲区大小,一般设置物理内存的60%-70% innodb_buffer_pool_instances = 1     #缓冲池实例个数,推荐设置4个或8个 innodb_flush_log_at_trx_commit = 1   #关键参数,0代表大约每秒写入到日志并同步到磁盘,数据库故障会丢失1秒左右事务数据。1为每执行一条SQL后写入到日志并同步到磁盘,I/O开销大,执行完SQL要等待日志读写,效率低。2代表只把日志写入到系统缓存区,再每秒同步到磁盘,效率很高,如果服务器故障,才会丢失事务数据。对数据安全性要求不是很高的推荐设置2,性能高,修改后效果明显。 innodb_file_per_table = OFF   #默认是共享表空间,共享表空间idbdata文件不断增大,影响一定的I/O性能。推荐开启独立表空间模式,每个表的索引和数据都存在自己独立的表空间中,可以实现单表在不同数据库中移动。 innodb_log_buffer_size = 8M   #日志缓冲区大小,由于日志最长每秒钟刷新一次,所以一般不用超过16M 

3.2 系统配置优化

大多数MySQL都部署在linux系统上,所以操作系统的一些参数也会影响到MySQL性能,以下对linux内核进行适当优化。

net.ipv4.tcp_fin_timeout = 30 #TIME_WAIT超时时间,默认是60s net.ipv4.tcp_tw_reuse = 1     #1表示开启复用,允许TIME_WAIT socket重新用于新的TCP连接,0表示关闭 net.ipv4.tcp_tw_recycle = 1   #1表示开启TIME_WAIT socket快速回收,0表示关闭 net.ipv4.tcp_max_tw_buckets = 4096    #系统保持TIME_WAIT socket最大数量,如果超出这个数,系统将随机清除一些TIME_WAIT并打印警告信息 net.ipv4.tcp_max_syn_backlog = 4096 #进入SYN队列最大长度,加大队列长度可容纳更多的等待连接 

在linux系统中,如果进程打开的文件句柄数量超过系统默认值1024,就会提示“too many files open”信息,所以要调整打开文件句柄限制。

# vi /etc/security/limits.conf  #加入以下配置,*代表所有用户,也可以指定用户,重启系统生效 * soft nofile 65535 * hoft nofile 65535 # ulimit -SHn 65535   #立刻生效 

3.3 硬件配置

加大物理内存,为提高文件系统性能,linux内核会从内存中分配缓存区(系统缓存和文件缓存)来存放热数据,也就是说物理内存越大,分配缓存区越大,缓存数据越多。

SSD硬盘代替SAS硬盘,将RAID级别调整为RAID1+0,相对于RAID1和RAID5有更好的读写性能(IOPS),毕竟数据库的压力主要来自磁盘I/O方面。


必威 8


) 本文出自Bkjia博客博主企鹅那点事儿,如有任何问题请进入博主页面互动讨论。 博文地址:...

【博文推荐】CentOS6.6+Puppet3.7.3分布式部署Zabbix2.4监控系统(1)

本博文出自Bkjia博客redking博主,有任何问题请进入博主页面互动讨论!
博文地址:http://redking.blog.51cto.com/27212/1604984
OS:CentOS-6.6-x86_64(Minimal)
Puppet 3.7.3
Zabbix 2.4
Puppet/Zabbix master: master/zabbix.redking.com
Puppet/Zabbix agent:  agent1~5.redking.com

Puppet安装

1.服务端安装puppet-server

puppet不在CentOS的基本源中,需要加入PuppetLabs提供的官方源,Puppet Master服务器端安装puppet-server,自动匹配安装Facter等相关依赖包

[[email protected] ~]# rpm -ivh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm
[[email protected] ~]# yum install -y puppet-server
[[email protected] ~]# chkconfig puppetmaster on
[[email protected] ~]# service puppetmaster start

2.客户端安装puppet

[[email protected] ~]# rpm -ivh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm
[[email protected] ~]# yum install -y puppet
[[email protected] ~]# chkconfig puppet on
[[email protected] ~]# service puppet start

Puppet Master服务器配置

1.配置自动认证

允许所有redking.com域的主机自动颁发证书.创建autosign.conf文件

[[email protected] ~]# cat > /etc/puppet/autosign.conf <<EOF
> *.redking.com
> EOF
[[email protected] ~]#

Puppet Agent客户端配置

1.修改客户端主配置文件puppet.conf来增加监听与指定服务端域名

[[email protected] ~]# vim /etc/puppet/puppet.conf 
[agent]
        listen = true
        server = master.redking.com

必威 9

Puppet测试

这样我们可以使用Puppet来管理Puppet,通过配置puppet modules的方式来管理所有puppet客户端,将配置文件应用到所有服务器。

client需要向服务器端发出请求, 让服务器对客户端进行管理. 这其实是一个证书签发的过程. 第一次运行 puppet 客户端的时候会生成一个SSL证书并指定发给Puppet 服务端, 服务器端如果同意管理客户端,就会对这个证书进行签发,可以用这个命令来签发证书,由于我们已经在客户端设置了server地址,因此不需要跟服务端地址

[[email protected] ~]# puppet agent --test

必威 10  

为了详细了解注册的过程和日后排错,可以增加参数

–no-daemonize 前台输出日志  

–verbose 输入更加详细的日志  

–debug 更加详细的日志,排错的时候使用  

–test 表示测试,就带一个–test参数就可以

[[email protected] ~]# puppet agent --no-daemonize --onetime --verbose --debug

服务端查看证书签发信息

[[email protected] ~]# puppet cert list --all

必威 11

Zabbix Server安装

1.配置软件仓库并安装Zabbix

[[email protected] ~]# rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm
[[email protected] ~]# yum install -y zabbix-server-mysql zabbix-web-mysql mysql-server

默认创建Zabbix运行的用户及组,创建Web服务器Apache虚拟主机配置文件。

2.创建数据库并导入数据表

[[email protected] ~]# rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm
[[email protected] ~]# yum install -y zabbix-server-mysql zabbix-web-mysql mysql-server
[[email protected] ~]# service mysqld start
[[email protected] ~]# chkconfig mysqld on
[[email protected] ~]# mysqladmin -u root password '123456'
[[email protected] ~]# mysql -uroot -p123456
mysql> create database zabbix character set utf8;
mysql> grant all privileges on zabbix.* to [email protected] identified by 'zabbix';
mysql> flush privileges;

进入Zabbix数据库文件目录导入数据库信息

[[email protected] ~]# cd /usr/share/doc/zabbix-server-mysql-2.4.3/create/
[[email protected] create]# mysql -uroot -p123456 zabbix < schema.sql
[[email protected] create]# mysql -uroot -p123456 zabbix < images.sql
[[email protected] create]# mysql -uroot -p123456 zabbix < data.sql

3.修改Zabbix配置文件配置数据库相关信息

[[email protected] ~]# vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

4.设置PHP默认时区

[[email protected] ~]# vim /etc/php.ini
date.timezone = PRC

5.启动Zabbix和Apache服务

[[email protected] ~]# service zabbix-server start
[[email protected] ~]# chkconfig zabbix-server on
[[email protected] ~]# service httpd start
[[email protected] ~]# chkconfig httpd on

6.设置Zabbix

Zabbix安装页面:

必威 12

必威 13

Zabbix后台界面

必威 14


必威 15


) 本博文出自Bkjia博客 redking 博主,有任何问题请进入博主页面互动讨论! 博文地...

本文由必威发布于必威-运维,转载请注明出处:puppet不在CentOS的基本源中必威:,大多数开发工

相关阅读