黑帽联盟

 找回密码
 会员注册
查看: 1256|回复: 0
打印 上一主题 下一主题

[集群服务] saltstack自动化安装编译mysql

[复制链接]
yun 黑帽联盟官方人员 

920

主题

37

听众

1364

积分

超级版主

Rank: 8Rank: 8

  • TA的每日心情
    奋斗
    2019-10-18 11:20
  • 签到天数: 678 天

    [LV.9]以坛为家II

    本帖最后由 yun 于 2019-8-29 13:43 编辑

    环境:centos6.7
    172.31.225.250 node1.example.com
    172.31.225.251 node2.example.com

    我们所需要用到的相关文件都在 /srv/salt/prod/files/ 这个目录下面,大家直接下载即可: mysql.zip (29.35 MB, 下载次数: 0)
    6.png

    master相关配置:(/etc/salt/master)

    1. file_roots:
    2.   base:
    3.     - /srv/salt/base
    4.   dev:
    5.     - /srv/salt/dev
    6.   prod:
    7.     - /srv/salt/prod

    8. pillar_roots:
    9.   base:
    10.     - /srv/salt/base/pillar
    11.   dev:
    12.     - /srv/salt/dev/pillar
    13.   prod:
    14.     - /srv/salt/prod/pillar
    复制代码
    开始部署lnmp,个人建议一个一个的部署,不要把nginx、php、mysql都部署在一个文件,这样的话,针对minion端,可以针对性的部署相应的服务


    1、部署mysql(这里个人是编译安装)
    首先下载源码包:
    wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.45.tar.gz


    初始化安装:(/srv/salt/prod/init/install.sls)
    1. pkg-init-install:
    2.   pkg.installed:
    3.     - names:
    4.       - gcc
    5.       - gcc-c++
    6.       - glibc
    7.       - make
    8.       - automake
    9.       - autoconf
    10.       - libjpeg-turbo-devel
    11.       - libpng
    12.       - libpng-devel
    13.       - freetype-devel
    14.       - libxml2
    15.       - libxml2-devel
    16.       - zlib
    17.       - zlib-devel
    18.       - libcurl
    19.       - libcurl-devel
    20.       - openssl
    21.       - openssl-devel
    22.       - swig
    23.       - cmake
    24.       - ncurses-devel
    25.       - libmcrypt
    26.       - libmcrypt-devel
    27.       - libtool-ltdl-devel
    28.       - bison
    29.       - git
    复制代码

    mysql安装:(/srv/salt/prod/mysql.sls)
    1. include:
    2.   - init.install

    3. mysql-source:
    4.   file.managed:
    5.     - name: /usr/local/src/mysql-5.6.45.tar.gz
    6.     - source: salt://files/mysql-5.6.45.tar.gz
    7.     - user: root
    8.     - group: root
    9.     - mode: 644

    10. mysql-install:
    11.   cmd.run:
    12.     - name: cd /usr/local/src && tar xf mysql-5.6.45.tar.gz && cd mysql-5.6.45 && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DWITH_LIBWRAP=0 -DDEFAULT_COLLATION=utf8_general_ci && make && make install
    13.     - unless: test -d /usr/local/mysql
    14.     - require:
    15.       - pkg: pkg-init-install
    16.       - file: mysql-source

    17. user-create:
    18.   cmd.run:
    19.     - name: groupadd mysql && useradd -r -g mysql mysql -s /sbin/nologin
    20.     - unless: id mysql
    21.     - require_in:
    22.       - cmd: mysql-chown

    23. mysql-chown:
    24.   cmd.run:
    25.     - name: cd /usr/local/mysql && chown -R mysql:mysql . && echo 0 > user.txt
    26.     - unless: test -f /usr/local/mysql/user.txt
    27.     - require:
    28.       - cmd: mysql-install
    29.     - require_in:
    30.       - cmd: mysql-init

    31. mysql-init:
    32.   cmd.run:
    33.     - name: cd /usr/local/mysql && scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
    34.     - unless: test -d /usr/local/mysql/data/mysql
    35.     - require:
    36.       - cmd: user-create
    37.       - cmd: mysql-install

    38. mysql-conf:
    39.   file.managed:
    40.     - name: /etc/my.cnf
    41.     - source: salt://files/my.cnf
    42.     - user: root
    43.     - group: root
    44.     - mode: 644

    45. /etc/init.d/mysqld:
    46.   file.managed:
    47.     - source: salt://files/mysql.server
    48.     - user: root
    49.     - group: root
    50.     - mode: 755
    51.     - require:
    52.       - cmd: mysql-install
    53.     - watch_in:
    54.       - service: mysql-service

    55. mysql-chkconfig:
    56.   cmd.run:
    57.     - name: chkconfig --add mysqld
    58.     - unless: chkconfig --list | grep mysqld
    59.     - requre:
    60.       - file: /etc/init.d/mysqld

    61. mysql-profile:
    62.   cmd.run:
    63.     - name: echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile && echo 'export PATH' >> /etc/profile && source /etc/profile && echo '0' > /etc/test.txt
    64.     - unless: test -f /etc/test.txt
    65.     - require:
    66.       - cmd: mysql-install

    67. mysql-service:
    68.   service.running:
    69.     - name: mysqld
    70.     - enable: True
    71.     - watch:
    72.       - file: mysql-conf
    复制代码

    下面正式安装:
    安装之前最好先进行测试安装,检查有没有错误,因为在生产环境下直接执行安装错误,会导致对外服务的相关组件有可能出现问题,所以先进性测试安装
    1. salt '*' state.sls mysql env=prod test=True
    复制代码
    这里我测试没有问题,就直接安装了
    1. salt '*' state.sls mysql env=prod
    复制代码
    查看mysql服务,或者查看3306端口起没起来
    node1.png

    node2.png


    注意:在执行'salt '*' state.sls mysql env=prod' 这条命令的时候,最后会一直卡在那里,具体原因如下:
    mysql5.6在启动后没有返回一个信号给salt,所以salt会一直卡着。把5.6的启动参数改为跟5.1一样,即可正常启动。


    mysql5.1和mysql5.6对比:
    201706161624022891.png

    改过之后,再次执行,一切正常

    至此就结束了。原创不易,转载请注明原创来处,谢谢!


    相关文章:
    saltstack自动化编译安装php

    saltstack自动化安装部署nginx

    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部