Linux项目实战——初创公司服务器改造优化
Posted 0611#
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux项目实战——初创公司服务器改造优化相关的知识,希望对你有一定的参考价值。
初创公司服务器改造方案
初创公司场景
- 初期的创业公司,公司内部网络架构相当混乱,IP地址需要手工配置,随着公司的发展,公司的研发能力不断完善,保证数据机密性和安全性。
服务器改造项目需求
- 需要重新采购一台服务器(根据业务选型),网络单独划分一个网段,作为以后服务器专用网段。请写出选型参考。
- linux 操作系统,版本采用 CentOS7(64 位),采用带桌面的安装,而且带有开发工具包。分区使用逻辑卷形式,系统安装后简单安全配置及初始化操作。
- 搭建 DHCP服务器
- 搭建 DNS 服务器
- 随着公司数据的爆发势增长,希望增加一块20G硬盘,将原有数据迁移到新硬盘上。同时考虑以后不断增加,采用具有动态扩容技术LVM方式将原有数据无损迁移。
服务器型号选择
一些想法
- 初期创业公司启动资金不是很充足所以服务器购买预算考虑15k-20k
- 服务器的品牌选择好后主要是考虑到四大因素,CPU、内存、网卡、磁盘
- 服务器选择的时候我们一般会选择比当前需求更高的配置,预防短期时间内需求的提升
- 需要确认服务器运行程序,结合项目分析需要运行 DNS服务、DHCP服务等,虽然都算不上CPU密集计算型服务,由于运行的服务还是比较多,加上现在服务器CPU基本都是至强系列,考虑先买单个12核,后期要转变成密集型服务再考虑添加一个 CPU 即可!
- 内存和 cpu 是分不开的,上述已经说到不是密集计算型的服务,每个服务占用内存不会超过2G,至少应该需要 8G 内存左右,而且必须保证后期根据业务的需求能扩展到更高。
- 磁盘方面的考虑,需要存储大量的重要数据,这里选择3块硬盘,每块硬盘大小为 500G,热插拔型,组成 RAID5,在读写上会有所保证,且数据安全性上比较可靠。
- 综上所述,选择一个主流品牌戴尔(DELL)Poweredge R740服务器 配置为12C/16G/600 * 2 500G * 1 满足需求
- 选择京东购买 有足够的售后保障
- 由于需要组成RAID5,选择加装一块500G硬盘
- RAID 5详解
RAID 5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案。 RAID 5可以理解为是RAID 0和RAID 1的折中方案。RAID 5可以为系统提供数据安全保障,但保障程度要比Mirror低而磁盘空间利用率要比Mirror高。RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较低,是运用较多的一种解决方案。
服务器配置详解
一、CentOS7系统安装
一、CentOS7系统的下载 https://www.centos.org/
二、基础分区
-
设备类型采用LVM逻辑卷
-
安装带有桌面的环境并且配置开发工具
二、安全配置及初始化操作
一、网络配置
[root@gongsi ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 #进入网卡配置
- 网络需要配置IP地址、子网掩码、网关、DNS服务器
- DNS地址由公司路由器提供
二、YUM源的配置
[root@gongsi ~]# yum install -y wget #安装wget
[root@gongsi ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #将YUM源连接至阿里云
[root@gongsi ~]# yum clean all #清除YUM的缓存
[root@gongsi ~]# yum repolist #刷新YUM源
三、密码安全控制
- 为了降低密码被猜出或被暴力破解的风险,避免长期使用同一个密码,在服务器端限制用户密码的最大有效天数,对于密码已经过期的用户,登陆时将被要求重新设置密码,否则将拒绝登录
[root@gongsi ~]# chage -M 30 lilei
[root@gongsi ~]# chage -M 30 hanmeimei #执行chage命令将有效期设置为30天
[root@gongsi ~]# cat /etc/shadow #检查是否修改成功 查看密码详细文件
四、命令历史自动清除
- Shell环境的历史命令机制为用户提供了极大的便利,但另一方面也给用户带来了潜在的风险。只要获得用户的命令历史文件,该用户的命令操作将会一览无余,如果曾经在命令行输入明文的密码,则无意之中服务器的安全堡垒又多了一个缺口。
- Bash终端环境中,历史命令的记录条数由变量HISTSIZE控制,默认为1000条,通过修改 /etc/profile 文件中的HISTSIZE变量值,可以影响系统中的所有用户。
[root@gongsi ~]# vim /etc/profile #进入配置文件 本命令适用于新用户
HISTSIZE=200 #将默认存储1000条命令改为200条
[lilei@gongsi ~]$ export HISTSIZE=200 #进入李雷账户为其修改历史命令保存200条
[hanmeimei@gongsi ~]$ export HISTSIZE=200 #进入韩梅梅账户为其修改历史命令保存200条
# export HISTSIZE命令适用于现有账户
- 还可以修改用户宿主目录中的 ~/.bash_logout 文件,添加清空命令历史的操作语句。这样,当用户退出已登录的Bash环境以后,所记录的历史命令将自动清空。
[root@gongsi ~]# vim ~/.bash_logout #进入配置文件
# ~/.bash_logout
history -c
clear
- 闲置超时时间,当超过指定的时间没有任何输入时即自动注销终端,可以避免当管理员不在时其他人员对服务器的误操作风险。闲置超时由变量 TMOUT 来控制,默认单位为秒。
[root@gongsi ~]# vim /etc/profile #进入配置文件 本命令适用于新用户
export TMOUT=600 #修改闲置超时时间设置为600秒
[root@gongsi ~]# export TMOUT=600 #为root用户设置超时限制600秒
[lilei@gongsi ~]$ export TMOUT=600 #为李雷用户设置闲置超时时间600秒
[hanmeimei@gongsi ~]$ export TMOUT=600 #为李雷用户设置闲置超时时间600秒
五、su和sudo的权限设定
5.1)su命令——切换用户
公司运维工程师背景 李雷为公司高级运维工程师 韩梅梅为公司新来的员工 需要做权限限定
[root@gongsi ~]# vim /etc/pam.d/su #进入su文件
auth required pam_wheel.so use_uid #将文件中的配置文件开启
5.2)将允许使用su命令的用户加入到wheel组
背景:李雷有时候需要进行深入系统操作将其账户进行提权
[root@gongsi ~]# gpasswd -a lilei wheel #将李雷加入wheel组
正在将用户“lilei”加入到“wheel”组中
[root@gongsi ~]# id lilei
uid=1001(lilei) gid=1001(lilei) 组=1001(lilei),10(wheel) #检查是否加入wheel组
- 启用pam_wheel认证以后,未加入到wheel组内的其他用户将无法使用su命令,尝试进行切换时将会按照 “拒绝权限”来处理,从而将切换用户的权限控制在最小范围内
5.3)sudo命令——提升执行权限
背景:韩梅梅作为新来的员工 有时也需要多服务器的日常运维操作,为其加入日常操作的命令
- 通过su命令可以非常方便地切换为另一个用户,前提是必须知道目标用户的登陆密码。对于生产环境中的Linux服务器,每多一个人知道特权密码,其安全风险也就增加一分。
在配置文件 /etc/sudoers 中添加授权
[root@gongsi ~]# visudo #进入sudo配置文件
hanmeimei ALL=/usr/sbin/reboot,!/usr/sbin/shutdown #添加如下配置允许重启但不允许关机
如果还需要添加命令可以继续添加
5.4)优化:账户锁定、员工离职
背景:由于公司扩展项目 高级运维工程师李雷出差 实习生韩梅梅离职
[root@ns1 ~]# passwd -l lilei #锁定李雷的账户
[root@ns1 ~]# userdel -r hanmeimei #删除用户韩梅梅
六、弱口令检测——John the Ripper
- John the Ripper,是一个快速的密码破解工具,用于在已知密文的情况下尝试破解出明文的破解密码软件,支持大多数的加密算法。
- John the Ripper的官方网站:https://www.openwall.com/john/
6.1)下载并安装john the ripper
[root@gongsi ~]# tar zxf john-1.9.0.tar.gz #解压
[root@gongsi ~]# cd john-1.9.0/ #切换到john目录下
[root@gongsi src]# make clean linux-x86-64 #切换到src子目录进行编译安装
[root@gongsi src]# ls ../run/john #确认已生成可执行程序john
../run/john
6.2)检测弱口令账号
[root@gongsi src]# cp /etc/shadow /root/shadow.txt #准备待破解的密码文件
[root@gongsi src]# cd ../run/
[root@gongsi run]# ./john /root/shadow.txt #执行破解
- 由于做实验所以密码配置简单,实际生产环境中密码应该相对复杂
三、DHCP服务器搭建
一、安装dhcp服务
[root@gongsi ~]# yum -y install dhcp #使用yum安装方式进行安装
二、配置dhcp服务
[root@gongsi ~]# vim /etc/dhcp/dhcpd.conf #进入主配置文件
option domain-name "baidu.com"; #搜索域
option domain-name-servers www.baidu.com; #DNS自定义修改
default-lease-time 600;
max-lease-time 7200; #最大租约时间 #外面为全局配置
subnet 192.168.100.0 netmask 255.255.255.0 { #分配的网段
range 192.168.100.100 192.168.100.110; #可用网段的范围
option routers 192.168.100.2; #dns服务器网关 #里面为局部配置{内}
}
三、开启dhcp服务
[root@gongsi ~]# systemctl start dhcpd #开启dhcp服务
[root@gongsi ~]# systemctl enable dhcpd #设置为开机自动启动
四、dhcp服务器测试
4.1)打开一台新的虚拟机进行检测 网络配置如下 BOOTPROTO修改为dhcp服务
[root@pakho ~]# ifdown ens32;ifup ens32 #重启网卡
4.2)检测结果可以看到已经成功分配
4.3)查看租约过程
[root@gongsi ~]# cat /var/lib/dhcpd/dhcpd.leases
四、关闭防火墙、selinux
[root@gongsi ~]# systemctl stop firewalld #关闭防火墙
[root@gongsi ~]# setenforce 0 #关闭selinux
[root@gongsi ~]# vim /etc/selinux/config #进入配置文件永久关闭selinux
SELINUX=disabled
五、DNS服务器搭建
一、安装BIND
- BIND (Berkeley Internet Name Daemon) 伯克利 Internet 域名服务
- 官方站点:http://www.isc.org/
[root@gongsi ~]# yum clean all #清除一下yum源的缓存
[root@gongsi ~]# yum repolist #重新加载yum源
[root@gongsi ~]# yum list | grep '^bind\\.' #查询yum仓库是否有bind安装包
[root@gongsi ~]# yum -y install bind* #安装bind服务
BIND 服务器端程序
- 主要执行程序:/usr/sbin/named
- 默认监听端口:53
- 主配置文件 /etc/named.conf
- 保存 DNS 解析记录的数据文件位于 /var/named/
二、配置主配置文件
[root@gongsi ~]# cp /etc/named.conf /etc/named.conf.backup #主配置文件备份
[root@gongsi ~]# vim /etc/named.conf #进入主配置文件
options { #全局配置
listen-on port 53 { 192.168.100.77; }; #监听53号端口,ip地址使用提供服务的本地IP,也可以设置any表示所有
listen-on-v6 port 53 { ::1; }; #ipv6 如果不使用可以注释或删除
directory "/var/named"; #区域数据文件的默认存放位置
dump-file "/var/named/data/cache_dump.db"; #域名缓存数据库文件的位置
statistics-file "/var/named/data/named_stats.txt"; #状态统计文件的位置
memstatistics-file "/var/named/data/named_mem_stats.txt";#内存统计文件的位置
allow-query { any; }; #允许使用本解析服务的网段,可以使用any允许所有
zone "." IN { #正向解析“.”根区域
type hint; #类型为根区域
file "named.ca"; #区域数据文件为named.ca,记录13台根域服务器的域名和IP地址等信息
};
include "/etc/named.rfc1912.zones"; #包含区域配置文件里的所有配置
include "/etc/named.root.key";
三、修改区域配置文件,添加正、反向解析配置
[root@gongsi ~]# vim /etc/named.rfc1912.zones
文件有模板 可以复制粘贴后进行修改
正向解析配置
在文件中添加如下几行
zone "pakho.com" IN { #正向解析为“pakho.com”
type master; #类型:主缓存 master
file "pakho.zone"; #指定区域数据文件为pakho.zone
allow-update { none; };
};
一、配置正向区域数据文件
复制主配置文件
[root@gongsi ~]# cp -p /var/named/named.empty /var/named/pakho.zone
#保留源文件的权限和属主的属性复制
检查是否复制完成 拷贝文件是否具有属主属性
[root@gongsi ~]# vim /var/named/pakho.zone #进入配置文件
$TTL 3H #有效解析记录的生成周期
@ IN SOA pakho.com. admin.pakho.com. (
#@表示当前的DNS区域名表示这个域名 SOA表示授权信息开启 后面表示邮件地址因为@有特殊含义 所以使用.代替
0 ; serial #更新序列号,可以是10以内的整数
1D ; refresh #刷新时间,重新下载地址数据的间隔
1H ; retry #重试延迟,下载失败后的重试延迟
1W ; expire #失效时间,超过该时间仍无法下载则放弃
3H ) ; minimum #无效解析记录的生存周期
@ IN NS ns1.pakho.com. #记录当前区域DNS服务器的名称
IN MX 10 ns1.pakho.com. #MX为邮件服务器 10表示优先级 数字越大优先级越低
ns1 IN A 192.168.100.77 #记录正向解析域名对应的IP,即将域名与IP绑捆
#"@"这里是一个变量,表示当前DNS区域
#SOA标记用于同步主从服务器的区域数据,如更新序列号相同则不会更新
#“pakho.com.”此为完全合格域名(FQDN),后面有个“.”不能漏掉
#“admin.pakho.com.”表示管理员邮箱,这里的@是变量,所以用“.”代替
[root@gongsi ~]# hostnamectl set-hostname ns1.pakho.com. #修改主机名
更改主机名后重新登录
二、配置文件语法检查工具
[root@ns1 ~]# named-checkconf -z /etc/named.conf
反向解析配置
一、进入区域配置文件
[root@gongsi ~]# vim /etc/named.rfc1912.zones #进入配置文件
在文件中添加如下几行
zone "100.168.192.in-addr.arpa" IN { #添加反向解析配置
type master;
file "pakho.com.arpa"; #区域配置文件为pakho.com.arpa
};
二、配置反向区域数据文件
[root@ns1 ~]# cp -p /var/named/named.localhost /var/named/pakho.com.arpa
#保留源文件的权限和属主的属性复制
检查是否复制完成 拷贝文件是否具有属主属性
[root@ns1 ~]# vim /var/named/pakho.com.arpa #进入配置文件
$TTL 1D
@ IN SOA pakho.com. admin.pakho.com. (
0 ; serial #更新序列号,可以是10以内的整数
1D ; refresh #刷新时间,重新下载地址数据的间隔
1H ; retry #重试延迟,下载失败后的重试延迟
1W ; expire #失效时间,超过该时间仍无法下载则放弃
3H ) ; minimum #无效解析记录的生存周期
IN NS ns1.pakho.com.
77 IN PTR ns1.pakho.com. #前面的数字需要改成你该服务器网段最后的IP地址
#我的是192.168.100.77 就改成了77
#如果公司后续有其他服务还可以进行添加
三、重启服务
[root@ns1 ~]# systemctl restart named
DNS服务器测试
- 打开一台虚拟机配置DNS地址 对应我们搭建的DNS服务器
- 正向解析测试结果
- 反向解析测试结果
六、动态扩容技术LVM逻辑卷
背景:随着公司业务扩大,希望增加一块20G硬盘,将原有数据迁移到新硬盘上,同时考虑以后不断增加,采用逻辑卷扩容
一、在根目录下创建一个数据文件夹
[root@ns1 ~]# mkdir /data
二、模拟文件夹中存储大量数据
[root@ns1 data]# touch {1..50}.txt #创建50个txt文件模拟数据
三、将数据文件夹更名
[root@ns1 /]# mv data data.backup #更名为数据备份文件夹
四、创建逻辑卷挂载点
[root@ns1 ~]# mkdir /data
五、添加硬盘后进行重启
- 在真实生产环境中时不需要进行重启的
- 添加一块2GB的硬盘模拟添加一块20G的硬盘
[root@ns1 /]# shutdown -r now #重启
- 重启后检查防火墙和selinux的状态如果防火墙开启再进行关闭
[root@ns1 ~]# systemctl stop firewalld #关闭防火墙
[root@ns1 ~]# systemctl disabled firewalld #设置开机自动关闭
[root@ns1 ~]# getenforce 0 #selinux状态检查命令
Disabled
六、创建LVM
6.1)检测并确认新硬盘
[root@ns1 ~]# lsblk
6.2)创建物理卷
[root@ns1 ~]# pvcreate /dev/sdb #将物理磁盘转换成物理卷
6.3)创建卷组并添加物理卷
[root@ns1 ~]# vgcreate datavg /dev/sdb #创建卷组datavg 并将物理卷sdb加入卷组
6.4)创建逻辑卷
[root@ns1 ~]# lvcreate -L 1.5G -n datalv datavg
#-L 指逻辑卷大小 加入1.5G 名字为datalv 将卷组datavg加入逻辑卷
6.5)格式化
[root@ns1 ~]# mkfs.xfs /dev/datavg/datalv #/dev/卷组名/逻辑卷名
6.6)挂载
[root@ns1 ~]# mount /dev/datavg/datalv /data #将逻辑卷挂载到根下的data
6.7)数据转移
[root@ns1 /]# mv data.backup/*.txt data #将数据转移至data文件夹实现动态扩容将原有数据无损迁移
注:后续还有可能随着数据越来越多也会进行逻辑卷扩容
[root@ns1 ~]# lvextend -L +500M /dev/datavg/datalv
#逻辑卷扩容 -L:大小 +500M 给逻辑卷添加
只要卷组有空间逻辑卷就随便扩
七、总结一下
- 此文只是为初创公司服务器的改造优化方案
- 当然目前只需要这些服务并不会导致服务器宕机或者崩溃
- 如果说后续随着公司的日益扩张本服务器也会招架不住
- 随着公司的规模扩大数据中心的不断完善也会有很多的重要数据可以考虑做负载均衡、web服务器集群来保障公司的正常运营
- 当然后续也会看公司的需求进行服务器上云
- 包括后续的服务器正常运行会进行zabbix的配置以保证运维工程师能够实时定位/解决存在的各种问题
- 还有各种服务器的企业级优化
以上是关于Linux项目实战——初创公司服务器改造优化的主要内容,如果未能解决你的问题,请参考以下文章