基于CentOS的企业架构规划及服务器优化参数

阅读目录

  • 1.1 架构图
  • 1.2 架构搭建顺序
  • 1.3 架构环境
  • 1.4 虚拟主机配置
  • 2.1 架构优化脚本内容
  • 2.2 模板机主机hosts文件配置
  • 3.1 克隆前准备
  • 3.2 进行克隆
  • 3.3 进行克隆
  • 3.4 克隆主机配置
  • 3.5 虚拟主机快照
  • 3.6 错误排查
  • 3.7 如何让setup 命令中防火墙配置生效

第1章 企业架构规划

1.1 架构图

1.1.1 用户访问网站组成

类型作用实现方式
顾客-用户访问网站的人员@
保安-防火墙安全策略控制;正确的流量通过,攻击者的流量组织硬件- 华为 思科 juniper厂商软件-iptables
迎宾-负载均衡服务器提供访问者请求调度作用nginx反向代理负载均衡服务器LVS haproxy
服务员-web服务器根据http原理,回复给访问者相应的页面信息nginx网站服务技术  apachetomcat
厨师-数据库服务器返回给web服务器,相应用户数据的信息(字符串信息)mysql oracle
厨师­-存储服务器返回给web服务器,相应用户的视频、图片、附件等数据信息NFS存储服务器  分布式储存mfsfastdfs
厨师-备份服务器备份全网架构服务器的重要资料定时备份rsync+定时任务 实时备份 inotify/sersync+rsync
厨师-缓存服务器将数据存储到内存当中,提升读取效率memcache redis mongodb
心跳线 keepalived 高可用 
集群多台服务器做一件相同的事情 

1.1.2 运维人员访问网站组成

类型作用实现方式
秘密通道-vpn实现加密传输数据,实现认证建立连接 
监管-跳板机监控运维人员操作信息  1、实时监控运维人员桌面信息  2、命令记录功能  3、操作记录回放  4、用户审计功能jumpsever/gateone
批量管理服务器批量自动化管理多台主机ssh+keyansible (200-300台)saltstack
监控服务器监控架构服务器运行情况zabbix/nagios+cacti
批量安装部署系统(kicksrtart/cobbler) 

1.2 架构搭建顺序

顺序服务软件
1备份存储服务器rsync软件实现备份服务
2存储服务器NFS软件实现存储服务
31 2 之间实时同步inotify+rsync/sersync
4批量管理服务器ssh+key/ansible/saltstack
5web服务nginx
6LNMP架构linux+nginx+mysql+php
7负载均衡ngnix负载均衡
8心跳线keeplived 高可用

1.3 架构环境

1.3.1 主机环境

服务器规划数量作用说明
负载均衡服务器两台对访问网站的流量进行风流,减少流量对某台服务器的压力
web服务器三台处理用户的页面访问请求(Nginx)
NFS存储(兼职批量管理)一台储存图片、附件、头像等静态数据
备份服务器(rsync一台对全网服务器数据进行实时与定时备份
数据库服务器(mySQL一台对动态变化数据进行存储(文本内容)
管理服务器一台1)    1.作为yum仓库服务器,提供全网服务器的软件下载2)    2.跳板机、操作审计3)    3.vpn(pptp)4)    4.监控(zabbix)5)    5.兼职批量分发和管理(ssh+key/ansible/saltstack)
合计需要9台虚拟机

1.3.2 各主机(IP/主机名)规划

服务器说明外网ip(nat内网IP(LAN区段)主机名称规划
A1-nginx负载均衡服务器0110.0.0.5/24172.16.1.5/24lb01
A2-nginx负载均衡服务器0210.0.0.6/24172.16.1.6/24lb02
B1-nginx web服务器10.0.0.7/24172.16.1.7/24web02
B2-nginx web服务器10.0.0.8/24172.16.1.8/24web01
B3-nginx web服务器10.0.0.9/24172.16.1.924web03
C3-mysql数据库服务器10.0.0.51/24(生产环境不设置)172.16.1.51/24db01
C1-NFS存储服务器10.0.0.31/24(生产环境不设置)172.16.1.31/24nfs01
C2-rsync 存储服务器10.0.0.41/24(生产环境不设置)172.16.1.41/24backup
X-管理服务器10.0.0.61/24(生产环境不设置)172.16.1.61/24m01

1.3.3 初始目录规划

说明目录结构目录结构说明
初始化目录/server/scripts/server/tools/application存放脚本的目录存放编译安装软件源代码的目录软件程序的安装目录

1.4 虚拟主机配置

1.4.1 虚拟主机网卡添加(vmware软件)

选择网络适配器,添加一块新对的网卡

图1-1 添加网卡

选项默认即可,下一步直到网卡添加成功。

图1-2 添加完成

1.4.2 编辑网络

修改网络选项,将NAT模式子网改为 10.0.0.0 /24

修改网关为10.0.0.254

图1-3 修改NAT网络的网段

图1-4 修改NAT网络的网关

设置网卡的格式

      第一块网卡选择nat模式

图1-5 第一块网卡设置

第二块网卡选择lan区段

图1-6 第二块网卡设置 LAN区段

配置好lan区段后选择上lan区段即可

图1-7 第二块网卡选择好LAN区段

1.4.3 虚拟主机网卡地址配置

图1-8 第一块网卡eth0配置

图1-9 第二块网卡eth1配置

1.4.4 网卡配置好后注意

配置完成需要重启网络服务

/etc/init.d/network restart

第2章 架构主机优化脚本

注意:此脚本需要放在/tmp 目录下

#!/bin/bash
#################################################
#    File Name: optimize-init_sys.sh
#       Author: Energy
#         Mail: admin@znix.top
#     Function: system optimize scripts
#################################################
#optimization linux system
. /etc/init.d/functions

#change system directory: create seripts/software directory
function change_dir(){
    ShellDir="/server/scripts"
    SoftwareDir="/server/tools"
    mkdir -p $ShellDir &&\
    mkdir -p $SoftwareDir
}

# input info verify
function info_verify(){
    read -p "Please make sure the information you entered (yes|no): " info
  case "$info" in
        y*|Y*)
            continue
            ;;
        n*|N*)
            exit 1
          ;;
  esac
}

#change system hostname
function change_hostname(){
    read -p "Please input hostname: " HostName
        info_verify
    hostname $HostName &&\
    sed -i "2s/=.*$/=$HostName/g" /etc/sysconfig/network &&\
    chk_hosts=$(grep -o "\b$HostName\b" /etc/hosts)
    get_ip=$(ifconfig eth0|awk -F "[ :]+" 'NR==2 {print $4}')
    if [ -z $chk_hosts ]
    then
        echo "$get_ip   $HostName" >>/etc/hosts
    else
        continue
    fi
}

#boot system optimize: setup chkconfig
function change_chkconfig(){
    Boot_options="$1"
    for boots in `chkconfig --list|grep "3:on"|awk '{print $1}'|grep -vE "$Boot_options"`
    do
        chkconfig $boots off
    done
}

#setup system optimize: setup ulimit
function change_ulimit(){
    grep "*       -       nofile       65535" /etc/security/limits.conf >/dev/null 2>&1
    if [ $? -ne 0 ]
    then
        echo '*       -       nofile       65535' >>/etc/security/limits.conf
    fi
}

#setup system optimize: setup sysctl
function change_sysctl(){
    cat /tmp/sysctl.conf >/etc/sysctl.conf &&\
    modprobe bridge &>/dev/null &&\
    sysctl -p &>/dev/null
}

#sshd software optimize: change sshd_conf
function change_sshdfile(){
    SSH_Port="port 22"
    SSH_ListenAddress=$(ifconfig eth0|awk -F "[ :]+" 'NR==2 {print $4}')
    SSH_PermitRootLogin="PermitRootLogin no"
    SSH_PermitEmptyPassword="PermitEmptyPasswords no"
    SSH_GSSAPI="GSSAPIAuthentication no"
    SSH_DNS="useDNS no"
      #sed -i -e "13s/.*/$SSH_Port/g" /etc/ssh/sshd_config
      #sed -i -e "15s/.*/ListenAddress $SSH_ListenAddress/g" /etc/ssh/sshd_config
      #sed -i -e "42s/.*/$SSH_PermitRootLogin/g" /etc/ssh/sshd_config
      #sed -i -e "65s/.*/$SSH_PermitEmptyPassword/g" /etc/ssh/sshd_config
      sed -i -e "81s/.*/$SSH_GSSAPI/g" /etc/ssh/sshd_config
      sed -i -e "122s/.*/$SSH_DNS/g" /etc/ssh/sshd_config
}

#selinux software optimize: change disable
function change_selinux(){
    sed -i 's#SELINUX=.*#SELINUX=disabled#g' /etc/selinux/config &&\
    setenforce 0
}

#firewall software optimize: change stop
function change_firewall(){
    /etc/init.d/iptables stop >/dev/null 2>&1
}

#crond software optimize: time synchronization
function change_update(){
    grep -i "#crond-id-001" /var/spool/cron/root >/dev/null 2>&1
    if [ $? -ne 0 ]
    then
        echo '#crond-id-001:time sync by hq' >>/var/spool/cron/root
        echo "*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1">>/var/spool/cron/root
    fi
}

#update yum info
function update_yum(){
    wget -q -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
    wget -q -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
}

#change profile file info
function change_profile(){
    grep "PS1" /etc/profile >>/dev/null 2>&1
    if [ $? -ne 0 ]
    then
        echo  "PS1='\[\e[32;1m\][\u@\h \W]\\$ \[\e[0m\]'" >>/etc/profile
    fi
    grep "alias grep" /etc/profile >>/dev/null 2>&1
    if [ $? -ne 0 ]
    then
    echo "alias grep='grep --color=auto'" >>/etc/profile
    echo "alias ll='ls -l --color=auto --time-style=long-iso'" >>/etc/profile
    fi
    source /etc/profile
}

function main(){
    change_dir
    change_hostname
    change_chkconfig "crond|network|rsyslog|sshd|sysstat"
    change_ulimit
    change_sysctl
    change_sshdfile
    change_selinux
    change_firewall
    change_update
    update_yum
    change_profile
}
main
action "system optimize complete" /bin/true

2.1 架构优化脚本内容

适用于 #centos6.x  系统

2.1.1 更改yum源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

2.1.2 关闭selinux

sed -i 's#SELINUX=enforcing#SELINUX=disabled#g'  /etc/selinux/config
grep SELINUX=disabled /etc/selinux/config
setenforce 0
getenforce

2.1.3 关闭关防火墙

/etc/init.d/iptables stop
/etc/init.d/iptables stop
chkconfig iptables off

2.1.4 精简开机自启动服务

chkconfig |egrep -v "sshd|network|crond|rsyslog|sysstat"|awk '{print "chkconfig",$1,"off"}'|bash
export LANG=en
chkconfig --list|grep 3:on

2.1.5 提权oldboy可以sudo(可选)

useradd oldboy
\cp /etc/sudoers /etc/sudoers.ori
echo "oldboy ALL=(ALL)  NOPASSWD: ALL" >>/etc/sudoers
tail -1 /etc/sudoers
visudo -c

2.1.6 中文字符集(不用做)

cp /etc/sysconfig/i18n /etc/sysconfig/i18n.ori
echo 'LANG="zh_CN.UTF-8"' >/etc/sysconfig/i18n
source /etc/sysconfig/i18n
echo $LANG

2.1.7 时间同步

echo '#time sync by hzs at 2017-10-05' >>/var/spool/cron/root
echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null  2>&1 '>>/var/spool/cron/root
crontab -l

2.1.8 命令行安全(千万别做)

#echo 'export TMOUT=300' >>/etc/profile
#echo 'export HISTSIZE=5' >>/etc/profile
#echo 'export HISTFILESIZE=5' >>/etc/profile
#tail -3 /etc/profile
#./etc/profile

2.1.9 加大文件描述符

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

2.1.10 内核优化

cat >>/etc/sysctl.conf<<EOF
##youhua
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1 
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_syn_backlog = 16384
##iptables  youhua
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
EOF

#修改内核后让内核配置文件中的参数生效

sysctl -p

2.1.11 安装一些软件

yum install lrzsz namp tree  dos2unix nc -y

2.1.12 系统升级操作(暂不使用)

#yum update 或  yum upgrade
#yum -y update   #升级所有包,改变软件设置和系统设置,系统版本内核都升级
#yum -y ipgrade  #升级所有包,不改变系统设置和软件设置,系统版本升级,内核不变

2.2 模板机主机hosts文件配置

cat >/etc/hosts<<EOF

127.0.0.1     localhost localhost.localdomain localhost4 localhost4.localdomain4

::1           localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5    lb01
172.16.1.6    lb02
172.16.1.7    web02
172.16.1.8    web01
172.16.1.9    web03
172.16.1.51   db01 db01.etiantian.org
172.16.1.31   nfs01
172.16.1.41   backup
172.16.1.61   m01
EOF

第3章 虚拟机克隆

3.1 克隆前准备

一清空,两删除

  清空网络配置文件

>/etc/udev/rules.d/70-persistent-net.rules

echo ‘>/etc/udev/rules.d/70-persistent-net.rules’  >>/etc/rc.local

  删除网卡配置文件中的uuid和HWADDR

sed -ri '/HWADDR|UUID/d' /etc/sysconfig/network-scripts/ifcfg-eth[01]

3.2 进行克隆

模板机关机

shutdown -h now

3.2.1 保留快照

3.3 进行克隆

3.3.1 进行克隆

3.3.2 创建连接克隆

3.4 克隆主机配置

01. 利用给的脚本进行修改

02. 手动进行修改

hostname backup
sed -i "s#oldboy40#backup#g" /etc/sysconfig/network
grep "backup" /etc/sysconfig/network
HOSTNAME=backup
grep "backup" /etc/hosts
172.16.1.41     backup

3.4.1 手动修改网卡地址

sed -i 's#200#41#g'  /etc/sysconfig/network-scripts/ifcfg-eth[01]

3.4.2 修改系统主机名称

hostname backup
sed -i  's#znix#backup#g' /etc/sysconfig/network
修改hosts文件

3.4.3 重启网卡生效

/etc/init.d/network restart

3.4.4 重新建立xsheel标签进行连接

第一台克隆主机完成

3.5 虚拟主机快照

模板机初始化完成进行拍照留念

存储空间足够,快照要多保存。,

3.6 错误排查

3.6.1 网卡配置问题

    a 两删除操作完成之后,不要再进行setup修改网卡操作,否则mac地址信息会再次出现

    b setup命令无法设置网卡信息,主要和字符集设置有关

3.7 如何让setup 命令中防火墙配置生效

3.7.1 CentOS系统找不到setup命令工具的解决方法

yum -y install setuptool  
#安装setup命令工具

yum -y install ntsysv  
#安装setup工具配套的系统服务组件

yum -y install system-config-securitylevel-tui
#安装setup工具配套的防火墙配置组件

yum -y install system-config-network-tui
#安装setup工具配套的网络配置组件

yum -y install authconfig-gtk
#安装setup工具配套的验证配置组件

yum -y install system-config-keyboard
#安装setup工具配套的键盘配置组件

3.7.2 使用setup配置中的Firewall configuration出现的错误

Traceback (most recent call last):
  File "/usr/bin/system-config-firewall-tui", line 29, in <module>
    import fw_tui
  File "/usr/share/system-config-firewall/fw_tui.py", line 34, in <module>
    import fw_nm
  File "/usr/share/system-config-firewall/fw_nm.py", line 30, in <module>
    bus = dbus.SystemBus()
  File "/usr/lib/python2.6/site-packages/dbus/_dbus.py", line 202, in __new__    private=private)
  File "/usr/lib/python2.6/site-packages/dbus/_dbus.py", line 108, in __new__
    bus = BusConnection.__new__(subclass, bus_type, mainloop=mainloop)
  File "/usr/lib/python2.6/site-packages/dbus/bus.py", line 125, in __new__
    bus = cls._new_for_bus(address_or_type, mainloop=mainloop)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.FileNotFound: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory

3.7.3 解决办法

yum install -y system-config-firewall system-config-firewall-tui dbus eggdbus && service messagebus start

本文文使用的系统版本为: CentOS Linux release 7.4.1708 (Core) 内核版本为: 3.10.0-693.el7.x86_64

来源于 http://www.linuxidc.com/Linux/2017-12/149494.htm

赞(1) 打赏
特别声明:除特殊标注,本站文章均为原创,遵循CC BY-NC 3.0,转载请注明出处。三伏磨 » 基于CentOS的企业架构规划及服务器优化参数

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏