16.04.01 LTS บน AWS - Redis ไม่ทำงานอีกต่อไป


10

เราใช้เซิร์ฟเวอร์ redis ในอินสแตนซ์ของ AWS EC2 Ubuntu จำนวนหนึ่ง (14.04.4 LTS) โดยไม่มีปัญหา ฉันปั่นเซิร์ฟเวอร์ทดสอบเพื่อลองอัปเกรดเป็น Ubuntu 16.04.1 LTS และตอนนี้ redis จะไม่ทำงาน

หากฉันพยายามเริ่ม redis ด้วยตนเองฉันจะได้รับสิ่งนี้:

~$ 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.

ข้อมูลผิดพลาด:

~$ 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.

ฉันได้ลองทำสิ่งต่อไปนี้แล้ว:

  • รีสตาร์ทเซิร์ฟเวอร์
  • เรียกใช้สคริปต์การปรับใช้ของเราซึ่งรวมถึงการรีสตาร์ทใหม่
  • ใช้sudo apt-getเพื่อถอนการติดตั้งและติดตั้งเซิร์ฟเวอร์ redis อีกครั้ง
  • ทำการติดตั้งสองครั้งเมื่อยอมรับ/etc/redis/redis.confไฟล์ใหม่จากแพ็คเกจและเมื่อเก็บไฟล์ดั้งเดิมของเราไว้

ข้อเสนอแนะใด ๆ


ไม่ใช่คำตอบ แต่อาจช่วยได้: คุณสามารถเรียกใช้ redis เป็นคอนเทนเนอร์นักเทียบท่า
pLumo

คำตอบ:


5

ฉันติดตั้ง Redis โดยใช้ apt-get install redis-server

ปัญหาสำหรับฉัน: บทเรียนที่ฉันพบเช่น ตอบอื่น ๆ คำถามนี้สมมติว่าไบนารี Redis /usr/local/binตั้งอยู่ใน

ในการติดตั้งของฉันพวกเขากำลังอยู่ใน/usr/binดังนั้นการแก้ไขที่มีการเปลี่ยนแปลง/etc/systemd/system/redis.serviceเพื่อสะท้อนให้เห็นถึงนี้

ณ จุดนี้ผมที่สามารถเริ่มต้นด้วยตนเองและประสบความสำเร็จใช้/usr/bin/redis-server /etc/redis/redis.conf sudo systemctl start redis

ดังนั้นสิ่งที่คุณต้องทำเพื่อให้ Redis ทำงานบน 16.04 คือ:

  1. ให้แน่ใจว่าคุณติดตั้งโดยใช้apt-get install redis-server, ไม่ดาวน์โหลดน้ำมันดินแล้วให้และติดตั้ง
  2. สร้างหรือแก้ไขบริการ redis โดยเรียกใช้ sudo vi /etc/systemd/system/redis.service
  3. แก้ไขให้มีลักษณะเช่นนี้แล้วบันทึก:
[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. ออกจาก vi กลับไปทุบตี คุณควรจะสามารถเริ่มบริการได้ทันทีsudo systemctl start redis
  2. หากจุด 4 sudo /usr/bin/redis-server /etc/redis/redis.confไม่ทำงานคุณอาจจะสามารถอย่างน้อยเริ่มต้นด้วยตนเองโดยการทำงาน

ส่วนสำคัญที่ฉันต้องแก้ไขคือการทำให้แน่ใจว่า

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

ExecStop = / usr / bin / redis-cli ปิดเครื่อง

บรรทัดไม่ได้ชี้ไปที่usr/local/bin/foo- จำเป็นต้องลบ/local


1

ฉันมีปัญหาเดียวกัน แต่สาเหตุนั้นแตกต่างกัน

ฉันใช้ redis สำหรับการทดสอบบน VM ด้วยไคลเอนต์ dhcp

การกำหนดค่า/etc/redis/redis.confชี้ไปที่ IP ท้องถิ่น (เก่า) ที่ไม่ถูกต้องและทำให้ไม่สามารถผูกบริการกับ IP ที่กำหนดใหม่จาก DHCP

นี่คือบันทึกของปัญหาดังกล่าว:

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

ลองนี่สินี่คือการกำหนดค่าที่ใช้งานได้เพื่อ/lib/systemd/system/redis.serviceดูว่าสิ่งนี้อาจใช้ได้กับคุณหรือไม่

[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

จากนั้นตรวจสอบไฟล์บันทึกที่ระบุในการกำหนดค่า /etc/redis/redis.confเพื่อให้แน่ใจว่าคุณมีสิทธิ์ที่ถูกต้อง



0

เปิดเทอร์มินัลของคุณและเรียกใช้คำสั่ง ifconfig จากนั้นคุณจะได้รับที่อยู่ IP ของคุณเช่น 192.168.0.109 จากนั้นแก้ไขการกำหนดค่าของคุณโดยใช้คำสั่ง sudo nano /etc/redis/redis.conf ที่นี่ nano เป็นตัวแก้ไข คุณสามารถใช้เครื่องมือแก้ไขอื่น ๆ ตามที่คุณต้องการจากนั้นค้นหาการเชื่อมโยงและใส่ที่อยู่ IP ของคุณเช่น

ผูก 127.0.0.1 192.168.0.109 ที่นี่ ip ของฉันคือ 192.168.0.109 แล้วรีสตาร์ทเซิร์ฟเวอร์ของคุณโดยคำสั่งนี้ sudo systemctl รีสตาร์ท redis.service ตรวจสอบสถานะเซิร์ฟเวอร์ของคุณสถานะ sudo systemctl redis แล้วคุณจะพบว่ามันใช้งาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.