美文网首页
day31-中小规模集群架构

day31-中小规模集群架构

作者: Diudiu_0588 | 来源:发表于2019-04-13 11:55 被阅读0次

    一、什么是集群

    集群就是一堆机器做同一件事
    例如:www.jd.com 提供买东西服务,可能是几千台服务器,在背后支撑
    baidu.com 背后可能是上万台服务器。

    为什么企业用集群

    1. 7*24小时服务,就需要多台机器同时工作,互为实时备份。
    2. 高并发访问,需要多台服务器同时提供服务。

    集群特点

    1. 数据量大、用户多
    2. 7*24小时持续服务
    3. 高并发
    4. 用户分布广泛,网络情况复杂

    网站集群架构的组成

    中小集群架构 集群架构比喻 image.png image.png image.png

    基础优化

    1.规范目录
    mkdir -p /server/tools
    mkdir -p /server/scripts
    服务器目录结构规划图

    目录说明 目录结构说明
    /server/scripts 服务器本地存放脚本程序的目录
    /server/tools 服务器本地存放软件安装包的目录
    /application/软件名 服务器本地安装的根目录,软件名不带版本号,例如:
    /application/nginx,/application/mysql
    /application/nfinx/html Web服务器站点目录(bbs,blog,www,edu)
    /application/nginx/logs Web服务器日志{bbs|blog|www}_access.log
    /backup 服务器本地数据备份目录,也是备份服务器Rsync的备份目录
    /data NFS共享存储共享文件目录

    2.配置所有主机域名解析

    [root@oldboyedu ~]# cat >/etc/hosts<<EOF
    127.0.0.1    localhost localhost.localdomain localhost4 localhost4.locald
     ::1          localhost localhost.localdomain localhost6 localhost6.locald
    172.16.1.5 lb01
    172.16.1.6 lb02
    172.16.1.7 web01
    172.16.1.8 web02
    172.16.1.9 web03
    172.16.1.31 nfs01
    172.16.1.41 backup
    172.16.1.51 db01 db01.etiantian.org
    172.16.1.61 m01
    > EOF
    

    ping 域名 查看是否连通 有ip返回表示可以

    [root@oldboyedu ~]# ping lb01
    PING lb01 (172.16.1.5) 56(84) bytes of data.
    ^CFrom 172.16.1.200 icmp_seq=1 Destination Host Unreachable
    From 172.16.1.200 icmp_seq=2 Destination Host Unreachable
    From 172.16.1.200 icmp_seq=3 Destination Host Unreachable
    From 172.16.1.200 icmp_seq=4 Destination Host Unreachable
    
    --- lb01 ping statistics ---
    4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 2999ms
    pipe 4
    

    3.修改主机名

       hostnamectl set-hostname 要修改的主机名
    

    4.更新yum源
    第一个:就近使用yum源地址,安装软件更快。

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

    第二个:安装RHEL/CentOS官方源不提供的软件包

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

    把系统软件更新到最新。

     yum update -y
    

    5.关闭selinux
    # 关闭selinux

    sed -i 's#SELINUX=.*#SELINUX=disabled#g' /etc/selinux/config
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
    grep SELINUX=disabled /etc/selinux/config 查看修改selinux状态
    setenforce 0 临时关闭selinux 
    getenforce查看selinux状态
    

    6. 关闭防火墙

    systemctl stop firewalld
    systemctl disable firewalld
    

    7.创建一个oldboy用户并提权

    # 提权oldboy可以利用sudo

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

    8.设置字符集 (计算机只识别二进制,使用编码产生字符集)
    # 设置系统中文UTF8字符集(防止中文字符乱码)

    [root@oldboyedu ~]# cat /etc/locale.conf
    LANG="en_US.UTF-8"
    修改命令如下:
    cp /etc/locale.conf  /etc/locale.conf.ori
    echo 'LANG="zh_CN.UTF-8"' >/etc/locale.conf  
    source /etc/locale.conf 
    echo $LANG
    

    9.时间同步设置

    yum install ntpdate -y
    /usr/sbin/ntpdate ntp3.aliyun.com
    

    下面为执行:

    echo '#crond-id-001:time sync by oldboy' >>/var/spool/cron/root
    echo "*/5 * * * * /usr/sbin/ntpdate ntp3.aliyun.com >/dev/null 2>&1">>/var/spool/cron/root
    crontab -l
    

    10. 基础优化操作项:提升命令行操作安全性(可选优化)
    # 提升命令行安全(可选配置)

    echo 'export TMOUT=300' >>/etc/profile  设置会话超时时间为300S
    echo 'export HISTSIZE=5' >>/etc/profile   命令行历史记录保留5个
    echo 'export HISTFILESIZE=5' >>/etc/profile  命令行历史记录文件保留5个
    tail -3 /etc/profile
    
    . /etc/profile  让设置生效
    

    11.加大文件描述符
    # 实例演示:加大文件描述

    echo '*               -       nofile          65535 ' >>/etc/security/limits.conf 
    tail -1 /etc/security/limits.conf
    ulimit -SHn   65535  临时生效
    ulimit -n       #<==命令方式查看配置结果
    

    12. 优化内核

    cat >>/etc/sysctl.conf<<EOF
    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_orphans = 16384
    

    #以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理。

    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
    net.core.wmem_default = 8388608
    net.core.rmem_default = 8388608
    net.core.wmem_max = 16777216
    net.core.rmem_max = 16777216
    EOF
    
    sysctl -p
    

    13. 基础优化操作项
    基础优化操作项:安装系统常用软件
    CentOS6和CentOS7都要安装的企业运维常用基础工具包

    yum install tree nmap dos2unix lrzsz nc lsof wget tcpdump htop iftop iotop sysstat nethogs -y
    

    CentOS7要安装的企业运维常用基础工具包

            yum install psmisc net-tools bash-completion vim-enhanced -y
    

    14.远程连接优化
    禁止root远程连接
    修改默认22端口,改为52113
    监听内网服务器ip

    image.png

    15.修改yum安装包改为不删除

    [main]
    cachedir=/var/cache/yum/$basearch/$releasever
    keepcache=1                  ************************   0 改为1
    debuglevel=2
    logfile=/var/log/yum.log
    exactarch=1
    obsoletes=1
    gpgcheck=1
    plugins=1
    installonly_limit=5
    bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
    distroverpkg=centos-release
    
    
    #  This is the default, if you make this bigger yum won't see if the metadata
    # is newer on the remote and so you'll "gain" the bandwidth of not having to
    # download the new metadata and "pay" for it by yum not having correct
    # information.
    #  It is esp. important, to have correct metadata, for distributions like
    # Fedora which don't keep old packages around. If you don't like this checking
    # interupting your command line usage, it's much better to have something
    # manually check the metadata once an hour (yum-updatesd will do this).
    # metadata_expire=90m
    
    # PUT YOUR REPOS HERE OR IN separate files named file.repo
    # in /etc/yum.repos.d
    ~                                                                                                                                                            
    ~                                                                                                                                                            
    ~ 
    

    16. 锁定重要文件
    chttr -i 进行锁定
    17. 清空多余的虚拟账号

    18. 为grub菜单加密码
    19. 禁止主机被ping(内核参数)
    20. 打补丁升级已有漏洞
    yum update -y
    21. 精简开机自启动服务

    systemctl list-unit-files |grep enable|egrep -v "sshd.service|crond.service|sysstat|rsyslog|^NetworkManager.service|irqbalance.service"|awk '{print "systemctl disable",$1}'|bash
    systemctl list-unit-files |grep enable
    

    保留服务:
    sshd|crond|sysstat|rsyslog|NetworkManager|irqbalance
    企业生产最小化原则

    1. 安装软件包最小化
    2. 用户权限最小化
    3. 目录文件权限最小化
    4. 自启动服务最小化
    5. 服务运行用户最小化

    相关文章

      网友评论

          本文标题:day31-中小规模集群架构

          本文链接:https://www.haomeiwen.com/subject/jsbtwqtx.html