第1章 CentOS7的使用

澳门微尼斯人手机版 1

导读:阿里巴巴DevOps转型之后,运维平台是如何建设的?阿里巴巴高级技术专家陈喻结合运维自身的理解,业务场景的分析和业界方法论的一些思考,得出来一些最佳实践分享给大家。

1.1 为什么要使用CentOS7版本

CentOS7是在CentOS6基础上发布的新版本,与之前的版本相比,主要的更新包括:

1、内核更新到3.10.0

2、支持Linux容器

3、LVM快照支持ext4和XFS

4、转用systemd、firewalld和GRUB2

5、XFS作为缺省文件系统

6、支持PTPv2

7、支持40G 以太网卡

8、在兼容的硬件上支持以UEFI安全启动模式安装

这其中最令人瞩目的新特性就是支持Docker技术。作为目前流行的应用虚拟化技术之一,Docker能够将应用程序与系统完全隔离,让其在系统之间实现迁移而不需要停机,提高了应用程序的移动性和灵活性。CentOS7在内核层面支持Docker容器技术,可以提高Docker稳定性和可靠性。

综上,我们会选择CentOS7来作为服务器的操作系统。

revit二次开发中遇到的问题

 

第2章 CentOS7与CentOS6版本的区别

RevitAPIUI.dll 只能 Native Library 中执行; 脱离了Native Library,API是跑不起来的

前言

2.1 系统基础服务变化

操作

Centos6

Centos7

对比

自动补全

只支持命令、文件名

支持命令、选项、文件名

 

文件系统

ext4       

xfs                

随机读写更快

repo仓库

yum

yum-config-manager  

添加仓库便捷

修改主机名

/etc/sysconfig/network

/etc/hostname            

hostnamectl

修改时区    

/etc/sysconfig/clock

timedatectl set-timezone   

更方便

修改字符集

/etc/sysconfig/il8n    

/etc/locale.conf           

localectl

防火墙

iptables

firewalld

 

服务管理

System V init

systemd

 

时间同步服务

ntp

chrony 

 

 

检查程序流程:登录,配置,启动revit。

 

2.2 系统文件目录结构

centos6

cetos7

bin 

usr/bin

sbin

usr/sbin

lib

usr/lib

在启动revit之前不能执行RevitAPI.dll和RevitAPIUI.dll的相关方法,

“我是这个应用的
Owner”是阿里巴巴DevOps转型的重要策略,运维有了这个策略以后,PE大量的日常工作就可以释放出来,会有更多的时间去思考沉淀,去做编码,去做以前不曾做的事情。

2.3 修改主机名

最后发现异常捕获, 
MessageShow.Show(e);封闭的方法引用的RevitAPIUI中的内容。

 

2.3.1 centos6实现方式

临时修改主机名

[root@zeq ~]# hostname zeq_temp

[root@zeq ~]# bash

[root@zeq_temp ~]#

永久修改主机名

[root@zeq_temp ~]# sed -i '/^HOSTNAME=/c HOSTNAME=zeq' /etc/sysconfig/network

[root@zeq_temp ~]# cat /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=zeq

删除或更换方法解决问题。

运维的三个阶段

2.3.2 centos7实现方式

临时修改主机名

[root@zeq ~]# hostname zeq-c7

[root@zeq ~]# bash

永久修改主机名

[root@zeq-c7 ~]# hostnamectl set-hostname zeq-cc7

[root@zeq-c7 ~]# cat /etc/hostname

zeq-cc7

 

 

2.4 时区修改

澳门微尼斯人手机版 2

2.4.1 查看时区

[root@zeq ~]# timedatectl list-timezones

澳门微尼斯人手机版, 

2.4.2 修改时区

[root@zeq ~]#timedatectl set-timezone "America/Punta_Arenas" 

[root@zeq ~]# timedatectl set-timezone "Asia/Shanghai"

第一阶段:黑屏,三角形是代表整个运维给用户的一些体感或者给研发的体感,人工运维,目前很多企业可能还是这样。

2.5 网络接口变化

net.ifnames
基于固件、拓扑、进行自动分配网卡名称,缺点比eth0、更难读,如ens32

biosdevname
根据戴尔服务器系统的BIOS提供的信息对网络接口进行重命名,如em1

默认命名规则 eth0 eth1 eth2

biosdevname em1 em2 em3

net.ifnames ens33 ens34 ens35

 

2.5.1 centos7使用ip命令查看ip地址方法

1.查看ip地址信息 ip addr

2.添加多个IP地址 ip addr add 192.168.56.200/24 dev eth0:1

3.控制网络接口 ip link set dev eth0 down

第二阶段:白屏,自动化运维,以前把脚本做成工具去弄,有什么特征,人push机器去干活,自助运维。

2.6 Systemd服务概述

Systemd初始

Systemd是Centos7新采用的一套管理体系,可以实现启动及进程服务管理等,对比Centos6系统之前所采用sysVini体系,带来了很多变化。

Centos7支持并行启动,显著提高开机启动效率(测试6与7区别)

Centos7关机只关闭正在运行的服务,Centos6关机会从头关到尾

Centos7服务的启动与停止不在需要init.d下的脚本

 

2.7 systemd启动级别

在Centos7中没有级别的概念,而是使用target目标来涵盖启动级别的概念

SysVinit     

级别

Systemd

关闭系统

0

runlevel0.target,poweroff.target

单用户模式

1

runlevel1.target,rescue.target

多用户模式

2

runlevel2.target,multi-user.target

多用户带网络模式

3

runlevel3.target,multi-user.target

多用户图形化模式  

5

runlevel5.target,graphical-user.target

重启操作系统

6

runlevel6.target,reboot.target

Centos7开机默认系统启动目标target

multi-user.target: analogous to runlevel 3

graphical.target: analogous to runlevel 5

第三阶段:用户对运维体感很少,但是运维这个领域是不变的。最重要的是人机交互变少了,无屏虽说是不可能的,非常极端,但是个趋势,少量的人机交互,它有自决策、自驱动。

2.7.1 查看系统当前默认运行级别(目标)

[root@zeq ~]# systemctl get-default

multi-user.target

 

2.7.2 修改系统启动默认级别(目标)

[root@zeq ~]# systemctl set-default runlevel5.target

建议修改回去

[root@zeq ~]# systemctl set-default multi-user.target

自动化运维基础

2.7.3 centos7关机指令

poweroff、shutdown -h now、init0 (不建议使用)

reboot

 

2.8 systemd服务管理

命令 选项(非必须) 执行命令 单元名称(非必须)

systemctl [OPTIONS…]COMMAND[NAME…]

操作

Centos6

Centos7

启动服务

/etc/init.d/crond start

systemctl start     crond

停止服务

/etc/init.d/crond stop

systemctl stop      crond

重启服务

/etc/init.d/crond restart

systemctl restart   crond

查看状态

/etc/init.d/crond status

systemctl status    crond

开机启动

chkconfig –level 35 crond on

systemctl enable    crond

开机禁用

chkconfig crond off

systemctl disable   crond

禁止运行

 

systemctl umask     crond

做自动化运维,我认为有四大基础。

2.8.1 centos7上的service命令还是为了兼容centos6的习惯

[root@zeq ~]# service crond restart

Redirecting to /bin/systemctl restart crond.service

 

2.8.2 centos7启动与停止建议使用systemctl

[root@zeq ~]# systemctl restart crond

第一:运维标准与规范

2.8.3 centos7查看所有的服务开机启动和开机不启动的单元

[root@zeq ~]# systemctl list-unit-files

 

2.8.4 centos7开机不自启

[root@zeq ~]# systemctl disable crond

我们的标准有什么好处,让研发 follow 这个标准,标准会在工具里固化。

2.8.5 centos7开机自启

[root@zeq ~]# systemctl enable crond

 

2.8.6 centos7检查是否开机自启

[root@zeq ~]# systemctl is-enabled crond

disabled

第二:泛监控,运行时,静态,数据化,可视化

第3章 CentOS7系统优化

 

3.1 调整yum源

rm -rf /etc/yum.repos.d/*

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

泛监控,不是说传统的监控,是把线上想知道的一切都数据化,最终数据不是给人看的,是给机器去消费的,数据是我们的生产资料,不是可视化,那不是我们的目标。

3.2 清理缓存,并重新生成缓存文件

yum clean all

yum makecache

 

3.3 安装基础软件包

yum install net-tools vim tree htop iotop iftop \

iotop lrzsz sl wget unzip telnet nmap nc psmisc \

dos2unix bash-completion sysstat rsync nfs-utils -y

第三:CMDB

3.4 关闭防火墙

systemctl disable firewalld

systemctl stop firewalld

 

3.5 关闭selinux

sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config

1.CMDB
应该放什么,一般放服务器相关的、网络相关的、应用相关的这三个维度的相关信息。

3.6 优化ulimit

echo '* - nofile 65535' >> /etc/security/limits.conf

 

3.7 执行shutdown -h now 关闭Centos7系统

2.经常有人会说 CMDB
不准,数据不准是因为没有把数据生产和数据消费形成闭环,如果形成了闭环数据不准,那是因为你不用这个数据,所以不准。

3.8 选中对应的虚拟机->快照->拍摄快照

 

第3章 参考文献

参考与徐亮伟(标杆徐)的讲解:

 

第四:高效的CI/CD/CD

 

我们一定要具备快速的交付能力,主要体现这两个方面:第一,新开发的能力能不能快速上线,第二,想扩容一台机器能不能快速扩出来。这两个能力抽象出来是三块。

  • 持续集成(CI),很多人说持续集成工具不好用,效率低,其实持续集成的本质是要自动化测试。如果研发部不具备自动化测试的能力,持续集成怎么做都是失败的。
  • 持续集成里最重要的一点就是要推行单元测试、集成测试还有系统测试,单测是保证自己没问题,集成测试是保证跟上下游没问题,系统测试是保证整个系统没问题。
  • 持续交付(CD),有很多人说持续交付本质是一个
    Pipeline,CI的目标是什么?快速正确打一个包出来。CD的目标是什么?能够快速把一个包在不同的环境验证它是ok的,可以放到线上去,这就是持续交付要干的事。持续交付里很关键的一点我们要解决,就是它的环境一致性、配置一致性。环境一致性可以用Docker解决,Docker
    本身就是一种标准化的东西。所以说第一条用
    Docker,肯定是标准化的,另外一个问题,配置是不是一致性,是不是动静分离。
  • 持续部署(CD),是一种能力,这种能力非常重要,就是把一个包快速部署在你想要的地方。

PS:持续部署的几个痛点。

 

1.对包的文件的分发,阿里有一个叫蜻蜓的产品,是做了 SP2P,在 P2P
的基础上加了一个 Super。

 

2.应用启动,很多应用启动的时候要两三分钟,这是很有问题的。

 

3.部署起来以后这个业务是不是正确的,大家一定要做一个
HealthCheck,不是运维做,是PE做,一定要把这个要求说出来,执行
HealthCheck 这个脚本。

 

运维系统的重要特性

 

中间件研发首先关注稳定性,其次是效率,然后是易扩展。运维研发里面的六个重要特征,每一个都非常重要,以下是我感触比较深的几个。

 

澳门微尼斯人手机版 3

 

1.高可用

在做同城容灾演练的时候,我把关一切,结果发现运维系统挂了,救命的东西没有了怎么办?所以说运维系统一定要是高可用,不一定是高并发。

 

2.幂等性

发表评论

电子邮件地址不会被公开。 必填项已用*标注