16.04.01 LTS trên AWS - Redis không còn hoạt động


10

Chúng tôi đã chạy máy chủ redis trên một số phiên bản AWS EC2 Ubuntu (14.04.4 LTS) mà không gặp vấn đề gì. Tôi đã mở một máy chủ thử nghiệm để thử nâng cấp lên Ubuntu 16.04.1 LTS và bây giờ redis sẽ không hoạt động.

Nếu tôi cố gắng bắt đầu làm lại bằng tay, tôi sẽ nhận được điều này:

~$ sudo service redis-server restart
Job for redis-server.service failed because the control process exited with error code. See "systemctl status redis-server.service" and "journalctl -xe" for details.

Thông tin lỗi:

~$ systemctl status redis-server.service  
● redis-server.service - Advanced key-value store
  Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
  Active: inactive (dead) (Result: exit-code) since Wed 2016-10-19 19:26:06 UTC; 25min ago
    Docs: http://redis.io/documentation,
          man:redis-server(1)
 Process: 3730 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=1/FAILURE)
 Process: 3724 ExecStartPre=/bin/run-parts --verbose /etc/redis/redis-server.pre-up.d (code=exited, status=0/SUCCESS)

Oct 19 19:26:06 ip-x-y-z-w systemd[1]: redis-server.service: Control process exited, code=exited status=1
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: Failed to start Advanced key-value store.
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: redis-server.service: Unit entered failed state.
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: redis-server.service: Failed with result 'exit-code'.
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: redis-server.service: Service hold-off time over, scheduling restart.
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: Stopped Advanced key-value store.
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: redis-server.service: Start request repeated too quickly.
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: Failed to start Advanced key-value store.

Tôi đã thử như sau:

  • khởi động lại máy chủ
  • chạy tập lệnh triển khai của chúng tôi, bao gồm khởi động lại redis
  • được sử dụng sudo apt-getđể gỡ cài đặt và cài đặt lại redis-server
  • thực hiện cài đặt hai lần, một lần chấp nhận /etc/redis/redis.conftệp mới từ gói và một lần giữ tệp gốc của chúng tôi

Bất kỳ đề xuất?


không phải là một câu trả lời, nhưng có thể giúp ích: Bạn có thể chạy redis như một container docker.
pLumo

Câu trả lời:


5

Tôi đã cài đặt redis bằng apt-get install redis-server

Vấn đề đối với tôi: các hướng dẫn tôi đã tìm thấy, vd. câu trả lời khác cho câu hỏi này giả định rằng các nhị phân redis được đặt trong /usr/local/bin.

Trên cài đặt của tôi, chúng được đặt trong /usr/binmột bản sửa lỗi đang thay đổi /etc/systemd/system/redis.serviceđể phản ánh điều này.

Tại thời điểm này tôi có thể bắt đầu /usr/bin/redis-server /etc/redis/redis.conf bằng tay và chạy thành công sudo systemctl start redis.

Vì vậy, những gì bạn cần làm để làm cho redis hoạt động vào ngày 16.04 là:

  1. Hãy chắc chắn rằng bạn đã cài đặt bằng cách sử dụng apt-get install redis-server, không tải xuống tar, sau đó thực hiện & cài đặt.
  2. Tạo hoặc chỉnh sửa dịch vụ redis bằng cách chạy sudo vi /etc/systemd/system/redis.service
  3. Chỉnh sửa nó để trông như thế này sau đó lưu lại:
[Unit]
Description=Redis Datastore Server
After=network.target

[Service]
Type=forking
PIDFile=/var/run/redis/redis_6379
User=redis
Group=redis

Environment=statedir=/var/run/redis
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p ${statedir}
ExecStartPre=/bin/chown -R redis:redis ${statedir}
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/usr/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target
  1. Thoát vi trở lại bash. Bạn sẽ có thể bắt đầu dịch vụ ngay bây giờ vớisudo systemctl start redis
  2. Nếu điểm 4 không hoạt động, ít nhất bạn có thể bắt đầu bằng tay bằng cách chạy sudo /usr/bin/redis-server /etc/redis/redis.conf.

Phần quan trọng mà tôi phải chỉnh sửa là đảm bảo rằng

ExecStart = / usr / bin / redis-server /etc/redis/redis.conf

Tắt máy ExecStop = / usr / bin / redis-cli

dòng không trỏ đến usr/local/bin/foo- cần phải loại bỏ/local


1

Tôi đã có cùng một vấn đề nhưng nguyên nhân là khác nhau.

Tôi đã sử dụng redis để thử nghiệm trên máy ảo với máy khách dhcp.

Cấu hình /etc/redis/redis.confđã chỉ vào IP cục bộ (cũ) sai và do đó nó không thể liên kết dịch vụ với IP được gán mới từ DHCP.

Đây là nhật ký cho vấn đề như vậy:

mar 13 12:47:53 dev-vm systemd[1]: Failed to start Advanced key-value store.
mar 13 12:47:53 dev-vm systemd[1]: redis-server.service: Unit entered failed state.
mar 13 12:47:53 dev-vm systemd[1]: redis-server.service: Failed with result 'resources'.
mar 13 12:47:53 dev-vm systemd[1]: redis-server.service: Service hold-off time over, scheduling restart.
mar 13 12:47:53 dev-vm systemd[1]: Stopped Advanced key-value store.
mar 13 12:47:53 dev-vm systemd[1]: redis-server.service: Start request repeated too quickly.
mar 13 12:47:53 dev-vm systemd[1]: Failed to start Advanced key-value store.

0

Có thể thử điều này, đây là một cấu hình làm việc để /lib/systemd/system/redis.servicexem nếu điều này có thể làm việc cho bạn.

[Unit]
Description=Redis Datastore Server
After=network.target

[Service]
Type=forking
PIDFile=/var/run/redis/redis_6379
User=redis
Group=redis

Environment=statedir=/var/run/redis
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p ${statedir}
ExecStartPre=/bin/chown -R redis:redis ${statedir}
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf 
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target

Sau đó kiểm tra tệp nhật ký được chỉ định trong cấu hình /etc/redis/redis.confđể đảm bảo bạn có quyền chính xác.


0

Nếu bạn đang sử dụng Ubuntu, bạn nên có supervised systemdtrong /etc/redis/redis.conf.


0

Mở terminal của bạn và chạy lệnh ifconfig, sau đó bạn sẽ nhận được địa chỉ IP của mình như 192.168.0.109 sau đó chỉnh sửa cấu hình của bạn bằng cách chạy lệnh sudo nano /etc/redis/redis.conf ở đây nano là trình chỉnh sửa. Bạn có thể sử dụng bất kỳ trình soạn thảo nào khác bất cứ điều gì bạn muốn sau đó tìm kiếm liên kết và đặt địa chỉ IP của bạn như

liên kết 127.0.0.1 192.168.0.109 ở đây ip của tôi là 192.168.0.109 sau đó khởi động lại máy chủ của bạn bằng lệnh này sudo systemctl restart redis.service kiểm tra trạng thái máy chủ của bạn sudo systemctl redis sau đó bạn sẽ thấy nó hoạt động

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.