Sentry容器化部署

原创
2017/03/16 09:39
阅读数 758

软件版本

  • docker-1.12.3
  • sentry-8.14.1
  • postgresql-9.2.18
  • redis-3.2

启动一个新的容器用于部署sentry

docker run -it a7109a665e79 /bin/bash

sentry部署

下面关于sentry的安装和配置都是在刚刚开启的容器中进行

基础软件安装

yum -y install gcc gcc-c++ autoconf make openssl-devel python-devel libjpeg-turbo-devel

yum -y install postgresql-devel

pip2.7 install sentry #可能出现错误,根据提示逐步安装缺少的库

sentry --version #查看版本

[root@ca3e0e35a0a7 ~]# sentry --version
sentry, version 8.14.1

sentry配置

  • 初始化sentry配置

    [root@ca3e0e35a0a7 /]# sentry init /etc/sentry

    [root@ca3e0e35a0a7 ~]# ll /etc/sentry/

total 8
-rw-r--r--. 1 root root 1971 Mar 15 05:16 config.yml
-rw-r--r--. 1 root root 3828 Mar 15 05:16 sentry.conf.py

sentry.conf.py文件中修改数据库的配置项和BROKER_URL的配置项 数据库配置

DATABASES = {
    'default': {
        'ENGINE': 'sentry.db.postgres',
        'NAME': 'sentry',
        'USER': 'sentry',
        'PASSWORD': 'pass',
        'HOST': '169.24.1.111',
        'PORT': '5432',
        'AUTOCOMMIT': True,
        'ATOMIC_REQUESTS': False,
    }
}

代理(BROKER_URL)配置

BROKER_URL = 'amqp://sentry:sentry@ip:5672/sentry' #这里使用`rabbitmq`作为消息中间件,也可以使用`redis`

OR

BROKER_URL = 'redis://ip:6379'

如果redis不是运行在本机的话需要同时修改/etc/sentry/config.yaml文件中的redis的配置

  • 初始化sentry数据库

    sentry --config /etc/sentry upgrade

记住supersuer的用户和密码

  • 设置开机启动和数据定期数据清理

这里使用supervisor来进行sentry相关进程的管理,supervisor的安装可以参见网上的文档,supervisor的配置文档如下

[supervisord]
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB        ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10           ; (num of main logfile rotation backups;default 10)
loglevel=info                ; (log level;default info; others: debug,warn,trace)
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=true    ;非常重要,因本次是在docker里运行,所以supervisor进程放在前台运行

...

;新增的3个sentry启动任务
[program:sentry_web] 
command=sentry --config /etc/sentry run web             ; the program (relative uses PATH, can take args)
user=sentry                  ; setuid to this UNIX account to run the program

[program:sentry_worker]
command=sentry --config /etc/sentry run worker             ; the program (relative uses PATH, can take args)
user=sentry                  ; setuid to this UNIX account to run the program

[program:sentry_cron]
command=sentry --config /etc/sentry run cron             ; the program (relative uses PATH, can take args)
user=sentry                  ; setuid to this UNIX account to run the program
  • 测试

运行supervisord进程,查看sentry的各个进程是否正常运行

/usr/bin/supervisord -c /etc/supervisor.conf &  #在后台运行

netstat -tunlp|grep 9000 # 如果9000端口在监听表示启动正常

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN      -                                                            
[root@ca3e0e35a0a7 /]# 

开启应用

经过以上的工作已经完成一个能够运行的sentry的容器,但是因为容器没有将端口暴露在宿主机上,只能在容器内访问sentry的站点,下面的工作是将做好的容器提交为一个镜像后再创建可被外部访问的容器.

  • 将容器提交为镜像

    docker commit -m 'sentry image' -a 12860 6efcfd33c0c6 mvn.source.org:9990/sentry:8.14.1

6efcfd33c0c6:对应的容器ID

  • 运行新的容器

    docker run -it -p 9000:9000 -name sentry-8.14.1 58f0f918a119 /usr/bin/supervisord -c /etc/supervisor.conf

97c9fdd90602:对应sentry:8.14.1的镜像ID

  • 查看容器运行状态

    root@docker-center:~ # docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                      NAMES
5c30e214812f        58f0f918a119        "/usr/bin/supervisord"   20 hours ago        Up 20 hours         0.0.0.0:9000->9000/tcp     sentry-8.14.1
展开阅读全文
加载中

作者的其它热门文章

打赏
0
1 收藏
分享
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部
返回顶部
顶部