en tidligere version af denne tutorial blev skrevet af Kathleen Juell.
- introduktion
- forudsætninger
- Trin 1 — installation af Memcached
- Trin 2 — konfiguration af Memcached netværksindstillinger (Valgfrit)
- konfiguration af IPv6
- konfiguration af UDP
- konfiguration af Domænestik
- Trin 3 — Tilføjelse af autoriserede brugere
- tilføjelse af en godkendt bruger
- konfiguration af SASL-Support
- Trin 4 — tillader adgang over det Private netværk (Valgfrit)
- begrænsning af IP-adgang med brandvægge
- Binding af Memcached til den Private netværksgrænseflade
- konklusion
introduktion
hukommelse objekt caching systemer som Memcached kan optimere backend database ydeevne ved midlertidigt at lagre oplysninger i hukommelsen, bevarer ofte eller for nylig anmodet poster. På denne måde reducerer de antallet af direkte anmodninger til dine databaser.
i denne vejledning lærer du, hvordan du installerer og konfigurerer en Memcached server. Du lærer også, hvordan du tilføjer godkendelse for at sikre Memcached ved hjælp af Simple Authentication and Security Layer (SASL). Endelig lærer du, hvordan du binder Memcached til en lokal eller privat netværksgrænseflade for at sikre, at den kun er tilgængelig på pålidelige netværk af godkendte brugere.
forudsætninger
for at følge denne tutorial skal du bruge:
- en Ubuntu 20.04 server med en sudo ikke-root bruger og en brandmur aktiveret. For at konfigurere dette kan du følge vores indledende serveropsætning med Ubuntu 20.04 tutorial.
med disse forudsætninger på plads, vil du være klar til at installere og sikre din Memcached server.
Alternativt, hvis du vil eksperimentere med at installere og konfigurere Memcached i din bro. ser ved hjælp af en interaktiv terminal, skal du klikke på Start en interaktiv Terminal! knappen nedenfor for at komme i gang.
Trin 1 — installation af Memcached
hvis du ikke allerede har Memcached installeret på din server, kan du installere den fra de officielle Ubuntu-arkiver. Først skal du sørge for, at dit lokale pakkeindeks opdateres ved hjælp af følgende kommando:
- sudo apt update
installer derefter den officielle pakke som følger:
- sudo apt install memcached
du kan også installere libmemcached-tools
, som er en pakke, der indeholder forskellige værktøjer, som du kan bruge til at undersøge, teste og administrere din Memcached server. Føj pakken til din server med følgende kommando:
- sudo apt install libmemcached-tools
Memcached skal nu installeres som en tjeneste på din server sammen med værktøjer, der giver dig mulighed for at teste dens forbindelse.
for at starte Memcached skal du køre følgende systemctl
kommando:
- sudo systemctl start memcached
nu Kan du gå videre til at sikre dens konfigurationsindstillinger.
Trin 2 — konfiguration af Memcached netværksindstillinger (Valgfrit)
hvis din Memcached server kun skal understøtte lokale IPv4-forbindelser ved hjælp af TCP, kan du springe dette afsnit over og fortsætte til Trin 3 i denne vejledning. Ellers, hvis du vil konfigurere Memcached til at bruge UDP-stik, unikke Domænestik eller tilføje support til IPv6-forbindelser, skal du fortsætte med de relevante trin i dette afsnit af vejledningen.
sørg først for, at din Memcached-forekomst lytter på den lokale IPv4 loopback-grænseflade 127.0.0.1
. Den aktuelle version af Memcached, der leveres med Ubuntu og Debian, har sin -l
konfigurationsparameter indstillet til den lokale grænseflade, hvilket betyder, at den er konfigureret til kun at acceptere forbindelser fra den server, hvor Memcached kører.
Kontroller, at Memcached i øjeblikket er bundet til den lokale IPv4 127.0.0.1
interface og lytter kun til TCP-forbindelser ved hjælp af kommandoen ss
:
- sudo ss -plunt
de forskellige flag vil ændre ss
output på følgende måder:
-
-p
tilføjer navnet på den proces, der bruger en sokkel -
-l
begrænser output til kun at lytte stikkontakter i modsætning til også at inkludere tilsluttede stikkontakter til andre systemer -
-u
inkluderer UDP-baserede stikkontakter i output -
-n
viser numeriske værdier i output i stedet for menneskelige læsbare navne og værdier -
-t
inkluderer TCP-baserede stikkontakter i output
du skal modtage output som følgende:
OutputNetid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process . . .tcp LISTEN 0 1024 127.0.0.1:11211 0.0.0.0:* users:(("memcached",pid=8889,fd=26)). . .
denne udgang bekræfter, at memcached
er bundet til IPv4 loopback 127.0.0.1
adresse kun ved hjælp af TCP-protokollen.
nu hvor du har bekræftet, at Memcached er konfigureret til kun at understøtte IPv4 med TCP-forbindelser, kan du redigere /etc/memcached.conf
for at tilføje understøttelse af UDP -, Domænestik eller IPv6-forbindelser.
konfiguration af IPv6
for at aktivere IPv6-forbindelser til Memcached skal du åbne filen /etc/memcached.conf
med nano
eller din foretrukne editor:
- sudo nano /etc/memcached.conf
find først følgende linje i filen:
. . .-l 127.0.0.1
denne linje er, hvor Memcached er konfigureret til at lytte på den lokale IPv4-grænseflade. For at tilføje IPv6-understøttelse skal du tilføje en linje, der indeholder IPv6 loopback-adressen (::1) som denne:
. . .-l 127.0.0.1-l ::1
Gem og luk filen ved at trykke på CTRL+O
derefter ENTER
for at gemme, derefter CTRL+X
for at afslutte nano
. Genstart derefter Memcached ved hjælp af kommandoen systemctl
:
- sudo systemctl restart memcached
nu Kan du kontrollere, at Memcached også lytter til IPv6-forbindelser ved at gentage kommandoen ss
fra det foregående afsnit:
- sudo ss -plunt
du skal modtage output som følgende:
OutputNetid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process . . .tcp LISTEN 0 1024 127.0.0.1:11211 0.0.0.0:* users:(("memcached",pid=8889,fd=26)) . . .tcp LISTEN 0 1024 :11211 :* users:(("memcached",pid=8889,fd=27))
de fremhævede dele af output indikerer, at Memcached nu lytter til TCP-forbindelser på den lokale IPv6-grænseflade.
Bemærk, at hvis du vil deaktivere IPv4-support og kun lytte til IPv6-forbindelser, kan du fjerne linjen -l 127.0.0.1
fra /etc/memcached.conf
og genstarte tjenesten ved hjælp af kommandoen systemctl
.
konfiguration af UDP
hvis du vil bruge Memcached med UDP-stik, kan du aktivere UDP-support ved at redigere /etc/memcached.conf
konfigurationsfilen.
Åbn /etc/memcached.conf
ved hjælp af nano
eller din foretrukne editor, og tilføj derefter følgende linje til slutningen af filen:
. . .-U 11211
hvis du ikke har brug for TCP-support, skal du finde linjen -p 11211
og ændre den til -p 0
for at deaktivere TCP-forbindelser.
når du er færdig med at redigere filen, skal du gemme og lukke den ved at indtaste CTRL+O
for at gemme og derefter CTRL+X
for at afslutte.
genstart derefter din Memcached-tjeneste med kommandoen systemctl
for at anvende dine ændringer:
- sudo systemctl restart memcached
Kontroller, at Memcached lytter til UDP-forbindelser ved hjælp af kommandoen ss -plunt
igen:
- sudo ss -plunt
hvis du deaktiverede TCP-support og har IPv6-forbindelser aktiveret, skal du modtage output som følgende:
Output Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process . . .udp UNCONN 0 0 127.0.0.1:11211 0.0.0.0:* users:(("memcached",pid=8889,fd=28))udp UNCONN 0 0 :11211 :* users:(("memcached",pid=8889,fd=29)). . .
Bemærk, at dit output kan være anderledes, hvis du kun har IPv4-forbindelser aktiveret, og hvis du har forladt TCP-forbindelser aktiveret.
konfiguration af Domænestik
hvis du vil bruge Memcached med Domænestik, kan du aktivere denne support ved at redigere konfigurationsfilen /etc/memcached.conf
. Bemærk, at hvis du konfigurerer Memcached til at bruge et Domænestik, deaktiverer Memcached TCP-og UDP-support, så sørg for, at dine applikationer ikke behøver at oprette forbindelse ved hjælp af disse protokoller, før du aktiverer sokkelsupport.
Åbn /etc/memcached.conf
ved hjælp af nano
eller din foretrukne editor, og tilføj derefter følgende linjer til slutningen af filen:
. . .-s /var/run/memcached/memcached.sock-a 660
-a
flaget bestemmer tilladelserne på sokkelens fil. Sørg for, at den bruger, der skal oprette forbindelse til Memcached, er en del af memcache
– gruppen på din server, ellers modtager den en meddelelse om tilladelse nægtet, når du prøver at få adgang til stikket.
genstart derefter din Memcached-tjeneste med kommandoen systemctl
for at anvende dine ændringer:
- sudo systemctl restart memcached
Kontroller, at Memcached lytter efter Stikforbindelser til domænet ved hjælp af kommandoen ss -lnx
:
- sudo ss -lnx | grep memcached
flagget -x
begrænser output fra ss
for at vise socket-filer. Du skal modtage output som følgende:
Outputu_str LISTEN 0 1024 /var/run/memcached/memcached.sock 20234658 * 0
nu hvor du har konfigureret Memcached ‘ s netværksindstillinger, kan du fortsætte til næste trin i denne vejledning, som tilføjer SASL til godkendelse til Memcached.
Trin 3 — Tilføjelse af autoriserede brugere
hvis du vil føje godkendte brugere til din Memcached-tjeneste, kan du bruge Simple Authentication and Security Layer (SASL), som er en ramme, der fjerner godkendelsesprocedurer fra applikationsprotokoller. Først tilføjer du support til SASL til din server, og derefter konfigurerer du en bruger med godkendelsesoplysninger. Når alt er på plads, kan du derefter aktivere SASL i Memcached ‘ s konfigurationsfil og bekræfte, at alt fungerer korrekt.
tilføjelse af en godkendt bruger
for at komme i gang med at tilføje SASL-support skal du installere pakken sasl2-bin
, som indeholder administrative programmer til SASL-brugerdatabasen. Dette værktøj giver dig mulighed for at oprette en godkendt bruger eller brugere. Kør følgende kommando for at installere den:
- sudo apt install sasl2-bin
opret derefter den mappe og fil, som Memcached vil kontrollere for sine SASL-konfigurationsindstillinger ved hjælp af kommandoen mkdir
:
- sudo mkdir -p /etc/sasl2
Opret nu SASL-konfigurationsfilen ved hjælp af nano
eller din foretrukne editor:
- sudo nano /etc/sasl2/memcached.conf
tilføj følgende linjer:
log_level: 5mech_list: plainsasldb_path: /etc/sasl2/memcached-sasldb2
ud over at angive logningsniveauet er mech_list
indstillet til plain
, som fortæller Memcached, at den skal bruge sin egen adgangskodefil og bekræfte en adgangskode i almindelig tekst. Den sidste linje, du tilføjede, angiver stien til den brugerdatabasefil, du vil oprette næste. Gem og luk filen, når du er færdig.
nu opretter du en SASL-database med brugeroplysninger. Du bruger kommandoen saslpasswd2
med flagget -c
til at oprette en ny brugerindtastning i SASL-databasen. Brugeren vil være sammy her, men du kan erstatte dette navn med din egen bruger. Flagget -f
angiver stien til databasen, som vil være den sti, du angiver i /etc/sasl2/memcached.conf
:
- sudo saslpasswd2 -a memcached -c -f /etc/sasl2/memcached-sasldb2 sammy
endelig giver memcache bruger og gruppe ejerskab over SASL database med følgende chown
kommando:
- sudo chown memcache:memcache /etc/sasl2/memcached-sasldb2
du har nu en SASL-konfiguration på plads, som Memcached kan bruge til godkendelse. I det næste afsnit bekræfter du, at Memcached kører med standardindstillingerne først, og derefter omkonfigurere det og kontrollere, at det fungerer med SASL-godkendelse.
konfiguration af SASL-Support
vi kan først teste forbindelsen til vores Memcached-forekomst med kommandoen memcstat
. Denne kontrol hjælper os med at fastslå, at Memcached kører og er korrekt konfigureret, før SASL og brugergodkendelse er aktiveret. Når vi har foretaget ændringer i vores konfigurationsfiler, kører vi kommandoen igen for at kontrollere, om der er forskellige output.
for at kontrollere, at Memcached er i gang ved hjælp af kommandoen memcstat
, skal du skrive følgende:
- memcstat --servers="127.0.0.1"
hvis du bruger IPv6, skal du erstatte ::1
i stedet for IPv4 127.0.0.1
– adressen. Hvis du bruger et Domænestik, skal du bruge stien til stikket i stedet for IP-adressen, for eksempel --servers=/var/run/memcached/memached.sock
.
når du kører kommandoen memcstat
og opretter forbindelse til Memcached med succes, skal du modtage output som følgende:
OutputServer: 127.0.0.1 (11211) pid: 2299875 uptime: 2020 time: 1632404590 version: 1.5.22 . . .
Bemærk: Hvis du bruger Memcached med UDP-understøttelse, kan kommandoen memcstat
ikke oprette forbindelse til UDP-porten. Du kan bruge følgende netcat
kommando til at bekræfte forbindelsen:
- nc -u 127.0.0.1 11211 -vz
hvis Memcached svarer, skal du modtage output som følgende:
OutputConnection to 127.0.0.1 11211 port succeeded!
hvis du bruger Memcached med IPv6 og UDP, skal kommandoen være følgende:
- nc -6 -u ::1 11211 -vz
nu Kan du gå videre til at aktivere SASL. For at gøre det skal du tilføje parameteren -S
til /etc/memcached.conf
. Åbn filen med nano
eller din foretrukne editor igen:
- sudo nano /etc/memcached.conf
nederst i filen skal du tilføje følgende:
. . .-S
næste, finde og uncomment -vv
mulighed, som vil give verbose output til /var/log/memcached
. Den ikke-kommenterede linje skal se sådan ud:
. . .-vv
Gem og luk filen.
Genstart nu Memcached-tjenesten ved hjælp af følgende systemctl
kommando:
- sudo systemctl restart memcached
kontroller derefter journalctl
logfilerne for Memcached for at være sikker på, at SASL-support er aktiveret:
- sudo journalctl -u memcached |grep SASL
du skal modtage en outputlinje som følgende, hvilket indikerer, at SASL-support er initialiseret:
OutputSep 23 17:00:55 memcached systemd-memcached-wrapper: Initialized SASL.
nu Kan du kontrollere forbindelsen til Memcached igen. Med SASL-understøttelse på plads og initialiseret, skal følgende memcstat
kommando mislykkes uden gyldige godkendelsesoplysninger:
- memcstat --servers="127.0.0.1"
kommandoen skal ikke producere output. Skriv følgende shell-kommando for at kontrollere dens status:
- echo $?
$?
vil altid returnere udgangskoden for den sidste kommando, der forlod. Typisk indikerer noget udover 0
procesfejl. I dette tilfælde skal du modtage en udgangsstatus på 1
, hvilket indikerer, at kommandoen memcstat
mislykkedes.
kører memcstat
igen, denne gang med et brugernavn og en adgangskode bekræfter, om godkendelsesprocessen fungerede. Kør følgende kommando med dine legitimationsoplysninger erstattet i stedet for værdierne sammy
og dit kodeord, hvis du brugte forskellige legitimationsoplysninger:
- memcstat --servers="127.0.0.1" --username=sammy --password=your_password
du skal modtage output som følgende:
OutputServer: 127.0.0.1 (11211) pid: 3831 uptime: 9 time: 1520028517 version: 1.4.25 . . .
din Memcached-tjeneste er nu konfigureret og kører med SASL-support og brugergodkendelse.
Trin 4 — tillader adgang over det Private netværk (Valgfrit)
som standard memcached er kun konfigureret til at lytte på den lokale loopback (127.0.0.1
) interface, som beskytter Memcached interface mod eksponering for eksterne parter. Der kan dog være tilfælde, hvor du bliver nødt til at tillade adgang fra andre servere. I dette tilfælde kan du justere dine konfigurationsindstillinger for at binde Memcached til en privat netværksgrænseflade.
Bemærk: Vi dækker, hvordan du konfigurerer brandvægsindstillinger ved hjælp af UFV i dette afsnit, men det er også muligt at bruge DigitalOcean Cloud-brandvægge til at oprette disse indstillinger. For mere information om opsætning af DigitalOcean Cloud brandvægge, se vores Introduktion til DigitalOcean Cloud brandvægge. Hvis du vil vide mere om, hvordan du begrænser indgående trafik til bestemte maskiner, skal du tjekke afsnittet i denne tutorial om anvendelse af brandvægs regler ved hjælp af tags og servernavne og vores diskussion af brandvægsmærker.
begrænsning af IP-adgang med brandvægge
før du justerer dine konfigurationsindstillinger, er det en god ide at opsætte brandvægsregler for at begrænse de maskiner, der kan oprette forbindelse til din Memcached server. Først skal du registrere den private IP-adresse på enhver maskine, som du gerne vil bruge til at oprette forbindelse til Memcached. Når du har den private IP-adresse (eller adresser), tilføjer du en eksplicit regel for at give maskinen adgang til Memcached.
hvis du bruger memcached, kan du begrænse adgangen til din Memcached-forekomst ved at skrive følgende på din Memcached-server:
- sudo ufw allow from client_system_private_IP/32 to any port 11211
hvis mere end et system får adgang til Memcached via det private netværk, skal du sørge for at tilføje yderligere ufw
regler for hver maskine ved hjælp af ovenstående regel som en skabelon.
du kan finde ud af mere om UFO brandvægge ved at læse vores UFO essentials guide.
når disse ændringer er på plads, kan du justere Memcached-tjenesten til at binde til din servers private netværksgrænseflade.
Binding af Memcached til den Private netværksgrænseflade
nu hvor din brandvæg er på plads, kan du justere Memcached-konfigurationen til at binde til din servers private netværksgrænseflade i stedet for 127.0.0.1
.
find først den private netværksgrænseflade til din Memcached server ved hjælp af følgende ip
kommando
- ip -brief address show
afhængigt af din servers netværkskonfiguration kan output være anderledes end følgende eksempel:
Outputlo UNKNOWN 127.0.0.1/8 ::1/128eth0 UP 203.0.113.1/20 10.10.0.5/16 2001:DB8::1/64 fe80::7ced:9ff:fe52:4695/64eth1 UP 10.136.32.212/16 fe80::2cee:92ff:fe21:8bc4/64
i dette eksempel identificeres netværksgrænsefladerne ved deres eth0
og eth1
navne. De fremhævede IPv4-adresser på linjen eth0
er de offentlige IP-adresser til serveren.
den fremhævede 10.136.32.212
adresse på eth1
linjen er den private IPv4-adresse for serveren, og fe80::2cee:92ff:fe21:8bc4
adressen er IPv6 privat adresse. Dine IP-adresser vil være forskellige, men vil altid falde inden for følgende intervaller baseret på RFC 1918-specifikationen):
-
10.0.0.0
til10.255.255.255
(10/8 præfiks) -
172.16.0.0
til172.31.255.255
(172.16 / 12 præfiks) -
192.168.0.0
til192.168.255.255
(192.168/16 præfiks)
når du har fundet din servers private IP-adresse eller-adresser, skal du åbne filen /etc/memcached.conf
igen ved hjælp af nano
eller din foretrukne editor:
- sudo nano /etc/memcached.conf
Find linjen-l 127.0.0.1
, som du har markeret eller ændret tidligere, og skift adressen, så den passer til din servers private netværksgrænseflade:
. . .-l memcached_servers_private_IP. . .
hvis du gerne vil have Memcached lytte på flere adresser, tilføje en anden lignende linje for hver adresse, enten IPv4 eller IPv6 ved hjælp af -l memcached_servers_private_IP
format.
Gem og luk filen, når du er færdig.
genstart derefter Memcached-tjenesten:
- sudo systemctl restart memcached
Tjek dine nye indstillinger med ss
for at bekræfte ændringen:
- sudo ss -plunt
OutputNetid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process. . .tcp LISTEN 0 1024 10.137.0.2:11211 0.0.0.0:* users:(("memcached",pid=8991,fd=27)). . .
Test forbindelsen fra din eksterne klient for at sikre, at du stadig kan nå tjenesten. Det er en god ide at også kontrollere adgang fra en ikke-autoriseret klient (prøv at oprette forbindelse uden bruger og adgangskode) for at sikre, at din SASL-godkendelse fungerer som forventet. Det er også en god ide at prøve at oprette forbindelse til Memcached fra en anden server, der ikke har tilladelse til at oprette forbindelse for at kontrollere, at de regler, du oprettede, er effektive.
konklusion
i denne tutorial undersøgte du, hvordan du konfigurerer Memcached med IPv4, IPv6, TCP, UDP og unikke Domænestik. Du lærte også, hvordan du sikrer din Memcached server ved at aktivere SASL-godkendelse. Endelig lærte du, hvordan du binder Memcached til din lokale eller private netværksgrænseflade, og hvordan du konfigurerer brandvægsregler for at begrænse adgangen til Memcached.
for at lære mere om Memcached, tjek projektdokumentationen.